{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "fff19ef1-2c82-4e61-aeb0-ccf587edd2fa",
   "metadata": {},
   "source": [
    "# Readme\n",
    "关于Notebook的内容\n",
    "todo"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "73875e2a-7102-449f-aa4a-c98f359231b3",
   "metadata": {},
   "source": [
    "# Question 2 可行性分析 非线性回归方案\n",
    "直接求明确的非线性公式解模型参数"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "58c0ae50-1ca2-4716-b389-c3914727689a",
   "metadata": {},
   "source": [
    "## 工具依赖"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "6f45b460-f99c-4579-bfe2-420e170829d8",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 数学计算Lib\n",
    "import numpy as np\n",
    "# 科学计算Lib\n",
    "from scipy.optimize import curve_fit\n",
    "# 机器学习Lib\n",
    "from sklearn.model_selection import KFold, train_test_split\n",
    "from sklearn.metrics import mean_squared_error, mean_absolute_error\n",
    "from sklearn.ensemble import RandomForestRegressor\n",
    "# 数据分析Lib\n",
    "import pandas as pd\n",
    "# 可视化Lib\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "49cd2385-83bb-456c-966b-88e213c164e2",
   "metadata": {},
   "source": [
    "## 数据加载"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "6eea69c8-c372-43ae-a188-ad539617a9c1",
   "metadata": {},
   "outputs": [],
   "source": [
    "data_file_path = \"附件一（训练集）.xlsx\"\n",
    "# Load all data\n",
    "all_data_frame = pd.read_excel(data_file_path, engine='openpyxl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "41e17451-2556-42ad-8479-fa0d3e5e3907",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>温度，oC</th>\n",
       "      <th>频率，Hz</th>\n",
       "      <th>磁芯损耗，w/m3</th>\n",
       "      <th>励磁波形</th>\n",
       "      <th>0（磁通密度B，T）</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>...</th>\n",
       "      <th>1014</th>\n",
       "      <th>1015</th>\n",
       "      <th>1016</th>\n",
       "      <th>1017</th>\n",
       "      <th>1018</th>\n",
       "      <th>1019</th>\n",
       "      <th>1020</th>\n",
       "      <th>1021</th>\n",
       "      <th>1022</th>\n",
       "      <th>1023</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>25</td>\n",
       "      <td>50030</td>\n",
       "      <td>1997.95525</td>\n",
       "      <td>正弦波</td>\n",
       "      <td>0.000213</td>\n",
       "      <td>0.000389</td>\n",
       "      <td>0.000566</td>\n",
       "      <td>0.000743</td>\n",
       "      <td>0.000919</td>\n",
       "      <td>0.001096</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.001551</td>\n",
       "      <td>-0.001374</td>\n",
       "      <td>-0.001198</td>\n",
       "      <td>-0.001022</td>\n",
       "      <td>-0.000846</td>\n",
       "      <td>-0.000669</td>\n",
       "      <td>-0.000492</td>\n",
       "      <td>-0.000316</td>\n",
       "      <td>-0.000140</td>\n",
       "      <td>0.000036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>25</td>\n",
       "      <td>50020</td>\n",
       "      <td>2427.74983</td>\n",
       "      <td>正弦波</td>\n",
       "      <td>-0.000551</td>\n",
       "      <td>-0.000358</td>\n",
       "      <td>-0.000165</td>\n",
       "      <td>0.000028</td>\n",
       "      <td>0.000221</td>\n",
       "      <td>0.000413</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.002476</td>\n",
       "      <td>-0.002284</td>\n",
       "      <td>-0.002091</td>\n",
       "      <td>-0.001899</td>\n",
       "      <td>-0.001707</td>\n",
       "      <td>-0.001515</td>\n",
       "      <td>-0.001322</td>\n",
       "      <td>-0.001129</td>\n",
       "      <td>-0.000937</td>\n",
       "      <td>-0.000744</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2 rows × 1028 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   温度，oC  频率，Hz   磁芯损耗，w/m3 励磁波形  0（磁通密度B，T）         1         2         3  \\\n",
       "0     25  50030  1997.95525  正弦波    0.000213  0.000389  0.000566  0.000743   \n",
       "1     25  50020  2427.74983  正弦波   -0.000551 -0.000358 -0.000165  0.000028   \n",
       "\n",
       "          4         5  ...      1014      1015      1016      1017      1018  \\\n",
       "0  0.000919  0.001096  ... -0.001551 -0.001374 -0.001198 -0.001022 -0.000846   \n",
       "1  0.000221  0.000413  ... -0.002476 -0.002284 -0.002091 -0.001899 -0.001707   \n",
       "\n",
       "       1019      1020      1021      1022      1023  \n",
       "0 -0.000669 -0.000492 -0.000316 -0.000140  0.000036  \n",
       "1 -0.001515 -0.001322 -0.001129 -0.000937 -0.000744  \n",
       "\n",
       "[2 rows x 1028 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "all_data_frame.head(2)\n",
    "# print(all_data_frame.columns.tolist())\n",
    "# ['温度，oC', '频率，Hz', '磁芯损耗，w/m3', '励磁波形', '0（磁通密度B，T）', .... 1022, 1023]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eb6e35e5-c835-497c-8b44-620bfa668639",
   "metadata": {},
   "source": [
    "关于其他的子Sheet的加载:每个Sheet都是一个材料的数据集.下面的实验将会聚焦于一个Sheet的过程."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "16f72a51-6ebe-43cb-ac18-84acd16e0d4e",
   "metadata": {},
   "outputs": [],
   "source": [
    "all_data_sheets_frames = pd.read_excel(data_file_path, sheet_name=None, engine='openpyxl')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "7ceae456-084a-4417-a519-e985752320a0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sheet name: 材料1\n",
      "   温度，oC  频率，Hz    磁芯损耗，w/m3 励磁波形  0（磁通密度B，T）         1         2         3  \\\n",
      "0     25  50030  1997.955250  正弦波    0.000213  0.000389  0.000566  0.000743   \n",
      "1     25  50020  2427.749830  正弦波   -0.000551 -0.000358 -0.000165  0.000028   \n",
      "2     25  50020  3332.725760  正弦波   -0.003780 -0.003564 -0.003349 -0.003134   \n",
      "3     25  50020  4502.908007  正弦波   -0.000511 -0.000267 -0.000023  0.000222   \n",
      "4     25  50030  6063.023248  正弦波    0.000458  0.000732  0.001007  0.001281   \n",
      "\n",
      "          4         5  ...      1014      1015      1016      1017      1018  \\\n",
      "0  0.000919  0.001096  ... -0.001551 -0.001374 -0.001198 -0.001022 -0.000846   \n",
      "1  0.000221  0.000413  ... -0.002476 -0.002284 -0.002091 -0.001899 -0.001707   \n",
      "2 -0.002919 -0.002704  ... -0.005927 -0.005713 -0.005499 -0.005285 -0.005070   \n",
      "3  0.000466  0.000711  ... -0.002950 -0.002707 -0.002463 -0.002220 -0.001976   \n",
      "4  0.001555  0.001830  ... -0.002290 -0.002016 -0.001741 -0.001466 -0.001192   \n",
      "\n",
      "       1019      1020      1021      1022      1023  \n",
      "0 -0.000669 -0.000492 -0.000316 -0.000140  0.000036  \n",
      "1 -0.001515 -0.001322 -0.001129 -0.000937 -0.000744  \n",
      "2 -0.004855 -0.004640 -0.004425 -0.004210 -0.003995  \n",
      "3 -0.001732 -0.001488 -0.001244 -0.001000 -0.000756  \n",
      "4 -0.000917 -0.000642 -0.000367 -0.000092  0.000183  \n",
      "\n",
      "[5 rows x 1028 columns]\n",
      "Sheet name: 材料2\n",
      "   温度，oC  频率，Hz     磁芯损耗，w/m3 励磁波形  0（磁通密度，T）         1         2         3  \\\n",
      "0     25  50020   2348.679049  正弦波  -0.001165 -0.000997 -0.000830 -0.000664   \n",
      "1     25  50020   3427.045851  正弦波  -0.001916 -0.001722 -0.001528 -0.001335   \n",
      "2     25  50020   6772.981613  正弦波   0.000569  0.000820  0.001071  0.001322   \n",
      "3     25  50020  12379.944810  正弦波   0.000519  0.000835  0.001150  0.001465   \n",
      "4     25  50020  21492.763090  正弦波  -0.002280 -0.001887 -0.001495 -0.001103   \n",
      "\n",
      "          4         5  ...      1014      1015      1016      1017      1018  \\\n",
      "0 -0.000497 -0.000330  ... -0.002835 -0.002668 -0.002501 -0.002334 -0.002167   \n",
      "1 -0.001141 -0.000947  ... -0.003851 -0.003657 -0.003464 -0.003271 -0.003077   \n",
      "2  0.001572  0.001823  ... -0.001941 -0.001690 -0.001439 -0.001187 -0.000936   \n",
      "3  0.001780  0.002096  ... -0.002644 -0.002328 -0.002012 -0.001695 -0.001379   \n",
      "4 -0.000710 -0.000317  ... -0.006201 -0.005810 -0.005419 -0.005028 -0.004637   \n",
      "\n",
      "       1019      1020      1021      1022      1023  \n",
      "0 -0.002000 -0.001833 -0.001666 -0.001499 -0.001332  \n",
      "1 -0.002884 -0.002691 -0.002498 -0.002304 -0.002110  \n",
      "2 -0.000685 -0.000434 -0.000183  0.000068  0.000318  \n",
      "3 -0.001064 -0.000747 -0.000431 -0.000115  0.000202  \n",
      "4 -0.004245 -0.003852 -0.003459 -0.003066 -0.002674  \n",
      "\n",
      "[5 rows x 1028 columns]\n",
      "Sheet name: 材料3\n",
      "   温度，oC  频率，Hz     磁芯损耗，w/m3 励磁波形  0（磁通密度B，T）         1         2         3  \\\n",
      "0     25  50020   4489.278556  正弦波   -0.001622 -0.001429 -0.001236 -0.001044   \n",
      "1     25  50020  14225.895340  正弦波   -0.003595 -0.003283 -0.002973 -0.002663   \n",
      "2     25  50020  23960.767060  正弦波   -0.002541 -0.002153 -0.001765 -0.001379   \n",
      "3     25  50020  42287.304910  正弦波    0.005448  0.005945  0.006442  0.006940   \n",
      "4     25  50020  69399.349400  正弦波    0.006187  0.006813  0.007438  0.008063   \n",
      "\n",
      "          4         5  ...      1014      1015      1016      1017      1018  \\\n",
      "0 -0.000851 -0.000659  ... -0.003541 -0.003350 -0.003158 -0.002967 -0.002775   \n",
      "1 -0.002352 -0.002041  ... -0.006690 -0.006381 -0.006073 -0.005764 -0.005455   \n",
      "2 -0.000993 -0.000607  ... -0.006398 -0.006014 -0.005630 -0.005246 -0.004860   \n",
      "3  0.007438  0.007936  ...  0.000470  0.000968  0.001466  0.001963  0.002461   \n",
      "4  0.008686  0.009307  ... -0.000050  0.000574  0.001198  0.001822  0.002447   \n",
      "\n",
      "       1019      1020      1021      1022      1023  \n",
      "0 -0.002584 -0.002392 -0.002200 -0.002007 -0.001815  \n",
      "1 -0.005147 -0.004837 -0.004527 -0.004217 -0.003907  \n",
      "2 -0.004473 -0.004087 -0.003701 -0.003314 -0.002928  \n",
      "3  0.002959  0.003457  0.003955  0.004452  0.004949  \n",
      "4  0.003070  0.003694  0.004317  0.004939  0.005562  \n",
      "\n",
      "[5 rows x 1028 columns]\n",
      "Sheet name: 材料4\n",
      "   温度，oC  频率，Hz     磁芯损耗，w/m3 励磁波形  0（磁通密度B，T）         1         2         3  \\\n",
      "0     25  50020   2525.795337  正弦波   -0.000109  0.000049  0.000207  0.000365   \n",
      "1     25  50020   4427.524958  正弦波    0.000020  0.000215  0.000410  0.000605   \n",
      "2     25  50020   5780.576037  正弦波    0.002607  0.002825  0.003043  0.003260   \n",
      "3     25  50020  10983.412600  正弦波    0.003480  0.003759  0.004038  0.004316   \n",
      "4     25  50020  14526.685680  正弦波    0.004069  0.004381  0.004693  0.005005   \n",
      "\n",
      "          4         5  ...      1014      1015      1016      1017      1018  \\\n",
      "0  0.000523  0.000681  ... -0.001685 -0.001528 -0.001370 -0.001213 -0.001055   \n",
      "1  0.000801  0.000995  ... -0.001928 -0.001733 -0.001539 -0.001344 -0.001149   \n",
      "2  0.003477  0.003693  ...  0.000434  0.000651  0.000869  0.001086  0.001304   \n",
      "3  0.004595  0.004873  ...  0.000696  0.000974  0.001253  0.001531  0.001809   \n",
      "4  0.005317  0.005628  ...  0.000946  0.001258  0.001570  0.001883  0.002195   \n",
      "\n",
      "       1019      1020      1021      1022      1023  \n",
      "0 -0.000898 -0.000740 -0.000582 -0.000425 -0.000267  \n",
      "1 -0.000955 -0.000760 -0.000566 -0.000371 -0.000176  \n",
      "2  0.001521  0.001738  0.001955  0.002173  0.002390  \n",
      "3  0.002087  0.002365  0.002644  0.002922  0.003201  \n",
      "4  0.002507  0.002819  0.003132  0.003444  0.003756  \n",
      "\n",
      "[5 rows x 1028 columns]\n"
     ]
    }
   ],
   "source": [
    "# 遍历字典，打印每个工作表的名称和前几行数据\n",
    "for sheet_name, df in all_data_sheets_frames.items():\n",
    "    print(f\"Sheet name: {sheet_name}\")\n",
    "    print(df.head())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0d6c38de-b0b6-4ecc-86b9-4ac0e344b21d",
   "metadata": {},
   "source": [
    "从现在起我们仍然对材料1进行研究"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "b5b9c3f9-56a0-4a07-812a-d9f130520c52",
   "metadata": {},
   "outputs": [],
   "source": [
    "# From 第五列到最后一列的最值\n",
    "magnetic_flux_density_frame = all_data_frame.iloc[:, 4:]  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "13ba5df8-1f7d-4b1e-887e-d4ca60ca7a5d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0（磁通密度B，T）</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>...</th>\n",
       "      <th>1014</th>\n",
       "      <th>1015</th>\n",
       "      <th>1016</th>\n",
       "      <th>1017</th>\n",
       "      <th>1018</th>\n",
       "      <th>1019</th>\n",
       "      <th>1020</th>\n",
       "      <th>1021</th>\n",
       "      <th>1022</th>\n",
       "      <th>1023</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.000213</td>\n",
       "      <td>0.000389</td>\n",
       "      <td>0.000566</td>\n",
       "      <td>0.000743</td>\n",
       "      <td>0.000919</td>\n",
       "      <td>0.001096</td>\n",
       "      <td>0.001272</td>\n",
       "      <td>0.001448</td>\n",
       "      <td>0.001624</td>\n",
       "      <td>0.001800</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.001551</td>\n",
       "      <td>-0.001374</td>\n",
       "      <td>-0.001198</td>\n",
       "      <td>-0.001022</td>\n",
       "      <td>-0.000846</td>\n",
       "      <td>-0.000669</td>\n",
       "      <td>-0.000492</td>\n",
       "      <td>-0.000316</td>\n",
       "      <td>-0.000140</td>\n",
       "      <td>0.000036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.000551</td>\n",
       "      <td>-0.000358</td>\n",
       "      <td>-0.000165</td>\n",
       "      <td>0.000028</td>\n",
       "      <td>0.000221</td>\n",
       "      <td>0.000413</td>\n",
       "      <td>0.000605</td>\n",
       "      <td>0.000798</td>\n",
       "      <td>0.000991</td>\n",
       "      <td>0.001183</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.002476</td>\n",
       "      <td>-0.002284</td>\n",
       "      <td>-0.002091</td>\n",
       "      <td>-0.001899</td>\n",
       "      <td>-0.001707</td>\n",
       "      <td>-0.001515</td>\n",
       "      <td>-0.001322</td>\n",
       "      <td>-0.001129</td>\n",
       "      <td>-0.000937</td>\n",
       "      <td>-0.000744</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.003780</td>\n",
       "      <td>-0.003564</td>\n",
       "      <td>-0.003349</td>\n",
       "      <td>-0.003134</td>\n",
       "      <td>-0.002919</td>\n",
       "      <td>-0.002704</td>\n",
       "      <td>-0.002488</td>\n",
       "      <td>-0.002273</td>\n",
       "      <td>-0.002057</td>\n",
       "      <td>-0.001841</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.005927</td>\n",
       "      <td>-0.005713</td>\n",
       "      <td>-0.005499</td>\n",
       "      <td>-0.005285</td>\n",
       "      <td>-0.005070</td>\n",
       "      <td>-0.004855</td>\n",
       "      <td>-0.004640</td>\n",
       "      <td>-0.004425</td>\n",
       "      <td>-0.004210</td>\n",
       "      <td>-0.003995</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.000511</td>\n",
       "      <td>-0.000267</td>\n",
       "      <td>-0.000023</td>\n",
       "      <td>0.000222</td>\n",
       "      <td>0.000466</td>\n",
       "      <td>0.000711</td>\n",
       "      <td>0.000955</td>\n",
       "      <td>0.001199</td>\n",
       "      <td>0.001443</td>\n",
       "      <td>0.001687</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.002950</td>\n",
       "      <td>-0.002707</td>\n",
       "      <td>-0.002463</td>\n",
       "      <td>-0.002220</td>\n",
       "      <td>-0.001976</td>\n",
       "      <td>-0.001732</td>\n",
       "      <td>-0.001488</td>\n",
       "      <td>-0.001244</td>\n",
       "      <td>-0.001000</td>\n",
       "      <td>-0.000756</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.000458</td>\n",
       "      <td>0.000732</td>\n",
       "      <td>0.001007</td>\n",
       "      <td>0.001281</td>\n",
       "      <td>0.001555</td>\n",
       "      <td>0.001830</td>\n",
       "      <td>0.002104</td>\n",
       "      <td>0.002378</td>\n",
       "      <td>0.002653</td>\n",
       "      <td>0.002927</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.002290</td>\n",
       "      <td>-0.002016</td>\n",
       "      <td>-0.001741</td>\n",
       "      <td>-0.001466</td>\n",
       "      <td>-0.001192</td>\n",
       "      <td>-0.000917</td>\n",
       "      <td>-0.000642</td>\n",
       "      <td>-0.000367</td>\n",
       "      <td>-0.000092</td>\n",
       "      <td>0.000183</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 1024 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   0（磁通密度B，T）         1         2         3         4         5         6  \\\n",
       "0    0.000213  0.000389  0.000566  0.000743  0.000919  0.001096  0.001272   \n",
       "1   -0.000551 -0.000358 -0.000165  0.000028  0.000221  0.000413  0.000605   \n",
       "2   -0.003780 -0.003564 -0.003349 -0.003134 -0.002919 -0.002704 -0.002488   \n",
       "3   -0.000511 -0.000267 -0.000023  0.000222  0.000466  0.000711  0.000955   \n",
       "4    0.000458  0.000732  0.001007  0.001281  0.001555  0.001830  0.002104   \n",
       "\n",
       "          7         8         9  ...      1014      1015      1016      1017  \\\n",
       "0  0.001448  0.001624  0.001800  ... -0.001551 -0.001374 -0.001198 -0.001022   \n",
       "1  0.000798  0.000991  0.001183  ... -0.002476 -0.002284 -0.002091 -0.001899   \n",
       "2 -0.002273 -0.002057 -0.001841  ... -0.005927 -0.005713 -0.005499 -0.005285   \n",
       "3  0.001199  0.001443  0.001687  ... -0.002950 -0.002707 -0.002463 -0.002220   \n",
       "4  0.002378  0.002653  0.002927  ... -0.002290 -0.002016 -0.001741 -0.001466   \n",
       "\n",
       "       1018      1019      1020      1021      1022      1023  \n",
       "0 -0.000846 -0.000669 -0.000492 -0.000316 -0.000140  0.000036  \n",
       "1 -0.001707 -0.001515 -0.001322 -0.001129 -0.000937 -0.000744  \n",
       "2 -0.005070 -0.004855 -0.004640 -0.004425 -0.004210 -0.003995  \n",
       "3 -0.001976 -0.001732 -0.001488 -0.001244 -0.001000 -0.000756  \n",
       "4 -0.001192 -0.000917 -0.000642 -0.000367 -0.000092  0.000183  \n",
       "\n",
       "[5 rows x 1024 columns]"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "magnetic_flux_density_frame.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "d4da1275-d380-472f-96a6-1906e51c7a58",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 计算每行的最大值 axis=1 指定沿行\n",
    "max_values = magnetic_flux_density_frame.max(axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "91c70ee9-a5d0-44f9-96c4-e1d27a43121b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0       0.028849\n",
      "1       0.031419\n",
      "2       0.035535\n",
      "3       0.040015\n",
      "4       0.045028\n",
      "          ...   \n",
      "3395    0.027540\n",
      "3396    0.034780\n",
      "3397    0.038987\n",
      "3398    0.054829\n",
      "3399    0.061444\n",
      "Length: 3400, dtype: float64\n"
     ]
    }
   ],
   "source": [
    "print(max_values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "2463bc3b-8e8c-44e2-b5cb-809be52c6d77",
   "metadata": {},
   "outputs": [],
   "source": [
    "all_data_frame.insert(4, 'magnetic_flux_density_max_value', max_values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "682bb3c7-fd77-4adc-bc16-326fa9045e61",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>温度，oC</th>\n",
       "      <th>频率，Hz</th>\n",
       "      <th>磁芯损耗，w/m3</th>\n",
       "      <th>magnetic_flux_density_max_value</th>\n",
       "      <th>励磁波形</th>\n",
       "      <th>0（磁通密度B，T）</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>...</th>\n",
       "      <th>1014</th>\n",
       "      <th>1015</th>\n",
       "      <th>1016</th>\n",
       "      <th>1017</th>\n",
       "      <th>1018</th>\n",
       "      <th>1019</th>\n",
       "      <th>1020</th>\n",
       "      <th>1021</th>\n",
       "      <th>1022</th>\n",
       "      <th>1023</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>25</td>\n",
       "      <td>50030</td>\n",
       "      <td>1997.95525</td>\n",
       "      <td>0.028849</td>\n",
       "      <td>正弦波</td>\n",
       "      <td>0.000213</td>\n",
       "      <td>0.000389</td>\n",
       "      <td>0.000566</td>\n",
       "      <td>0.000743</td>\n",
       "      <td>0.000919</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.001551</td>\n",
       "      <td>-0.001374</td>\n",
       "      <td>-0.001198</td>\n",
       "      <td>-0.001022</td>\n",
       "      <td>-0.000846</td>\n",
       "      <td>-0.000669</td>\n",
       "      <td>-0.000492</td>\n",
       "      <td>-0.000316</td>\n",
       "      <td>-0.000140</td>\n",
       "      <td>0.000036</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>25</td>\n",
       "      <td>50020</td>\n",
       "      <td>2427.74983</td>\n",
       "      <td>0.031419</td>\n",
       "      <td>正弦波</td>\n",
       "      <td>-0.000551</td>\n",
       "      <td>-0.000358</td>\n",
       "      <td>-0.000165</td>\n",
       "      <td>0.000028</td>\n",
       "      <td>0.000221</td>\n",
       "      <td>...</td>\n",
       "      <td>-0.002476</td>\n",
       "      <td>-0.002284</td>\n",
       "      <td>-0.002091</td>\n",
       "      <td>-0.001899</td>\n",
       "      <td>-0.001707</td>\n",
       "      <td>-0.001515</td>\n",
       "      <td>-0.001322</td>\n",
       "      <td>-0.001129</td>\n",
       "      <td>-0.000937</td>\n",
       "      <td>-0.000744</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2 rows × 1029 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   温度，oC  频率，Hz   磁芯损耗，w/m3  magnetic_flux_density_max_value 励磁波形  0（磁通密度B，T）  \\\n",
       "0     25  50030  1997.95525                         0.028849  正弦波    0.000213   \n",
       "1     25  50020  2427.74983                         0.031419  正弦波   -0.000551   \n",
       "\n",
       "          1         2         3         4  ...      1014      1015      1016  \\\n",
       "0  0.000389  0.000566  0.000743  0.000919  ... -0.001551 -0.001374 -0.001198   \n",
       "1 -0.000358 -0.000165  0.000028  0.000221  ... -0.002476 -0.002284 -0.002091   \n",
       "\n",
       "       1017      1018      1019      1020      1021      1022      1023  \n",
       "0 -0.001022 -0.000846 -0.000669 -0.000492 -0.000316 -0.000140  0.000036  \n",
       "1 -0.001899 -0.001707 -0.001515 -0.001322 -0.001129 -0.000937 -0.000744  \n",
       "\n",
       "[2 rows x 1029 columns]"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "all_data_frame.head(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "f2b96e0f-6249-4f4a-8b58-8f4856ca4549",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 重要特征列\n",
    "sub_column = ['温度，oC', '频率，Hz', '磁芯损耗，w/m3', '励磁波形', 'magnetic_flux_density_max_value']\n",
    "# 获取列'A'和'C'作为子表\n",
    "mainfeature_sub_df = all_data_frame[sub_column]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "cc328c10-f571-4cc5-a52b-ad208ec50022",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>温度，oC</th>\n",
       "      <th>频率，Hz</th>\n",
       "      <th>磁芯损耗，w/m3</th>\n",
       "      <th>励磁波形</th>\n",
       "      <th>magnetic_flux_density_max_value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>25</td>\n",
       "      <td>50030</td>\n",
       "      <td>1997.95525</td>\n",
       "      <td>正弦波</td>\n",
       "      <td>0.028849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>25</td>\n",
       "      <td>50020</td>\n",
       "      <td>2427.74983</td>\n",
       "      <td>正弦波</td>\n",
       "      <td>0.031419</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   温度，oC  频率，Hz   磁芯损耗，w/m3 励磁波形  magnetic_flux_density_max_value\n",
       "0     25  50030  1997.95525  正弦波                         0.028849\n",
       "1     25  50020  2427.74983  正弦波                         0.031419"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mainfeature_sub_df.head(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "83cd4e1c-4e81-4767-bc22-0b107be25d18",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 选中正弦波数据\n",
    "filtered_sin_df = mainfeature_sub_df[mainfeature_sub_df['励磁波形'] == '正弦波']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "e04b2e63-28f4-4971-bf0b-a736c217539d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>温度，oC</th>\n",
       "      <th>频率，Hz</th>\n",
       "      <th>磁芯损耗，w/m3</th>\n",
       "      <th>励磁波形</th>\n",
       "      <th>magnetic_flux_density_max_value</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>25</td>\n",
       "      <td>50030</td>\n",
       "      <td>1997.95525</td>\n",
       "      <td>正弦波</td>\n",
       "      <td>0.028849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>25</td>\n",
       "      <td>50020</td>\n",
       "      <td>2427.74983</td>\n",
       "      <td>正弦波</td>\n",
       "      <td>0.031419</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   温度，oC  频率，Hz   磁芯损耗，w/m3 励磁波形  magnetic_flux_density_max_value\n",
       "0     25  50030  1997.95525  正弦波                         0.028849\n",
       "1     25  50020  2427.74983  正弦波                         0.031419"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "filtered_sin_df.head(2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "d9a5f212-049c-4282-8a28-4e377e1534ca",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "False False False\n",
      "False False False\n"
     ]
    }
   ],
   "source": [
    "# 数据初步确认状态\n",
    "# Transform pandas dataframe column to numpy array \n",
    "f_data = filtered_sin_df['频率，Hz'].to_numpy() \n",
    "B_m_data = filtered_sin_df['magnetic_flux_density_max_value'].to_numpy() \n",
    "P_data = filtered_sin_df['磁芯损耗，w/m3'].to_numpy() \n",
    "T_data = filtered_sin_df['温度，oC'].to_numpy() \n",
    "# 检查是否有 NaN 或 Inf 值\n",
    "print(np.isnan(f_data).any(), np.isnan(B_m_data).any(), np.isnan(P_data).any())\n",
    "print(np.isinf(f_data).any(), np.isinf(B_m_data).any(), np.isinf(P_data).any())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4f8f7fed-2fb0-4339-8f2e-5e3243109e2a",
   "metadata": {},
   "source": [
    "## 模型定义"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "07febaca-f03a-4b03-abe6-265d45219ee3",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义模型\n",
    "def model_nonlinear_regression_describe(data, k1, alpha1, beta1):\n",
    "    f, B_m = data.T\n",
    "    return k1 * f**alpha1 * B_m**beta1\n",
    "\n",
    "# 初始猜测值和边界条件\n",
    "initial_guess = [1.0, 1.5, 2.5]  # k1, alpha1, beta1\n",
    "param_bounds = ([0, 1, 2], [np.inf, 3, 3])\n",
    "\n",
    "# 合并 f 和 B_m 数据\n",
    "data = np.column_stack((f_data, B_m_data))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "5eb724d7-e7e2-4f50-8573-866d45e62977",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[  1581.82541965   1957.50332619   2662.85807371 ...  53428.1551034\n",
      " 125315.27418951 166602.58788784]\n"
     ]
    }
   ],
   "source": [
    "# 打印初始猜测值下的模型输出\n",
    "predicted_values = model_nonlinear_regression_describe(data, *initial_guess)\n",
    "print(predicted_values)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e7214fd2-86ad-4e55-90da-4d3dc718d5bd",
   "metadata": {},
   "source": [
    "## 全数据训练\n",
    "不可以这么做,我们没有更多的测试机了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "d106fd0b-2a08-4526-9fb3-73da352cfd65",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Estimated parameters: k1 = 1.0803644791050995, alpha1 = 1.4125288056297771, beta1 = 2.0912986404843967\n"
     ]
    }
   ],
   "source": [
    "# 拟合\n",
    "try:\n",
    "    popt, pcov = curve_fit(model_nonlinear_regression_describe, data, P_data, bounds=param_bounds, p0=initial_guess)\n",
    "    print(f\"Estimated parameters: k1 = {popt[0]}, alpha1 = {popt[1]}, beta1 = {popt[2]}\")\n",
    "except RuntimeError as e:\n",
    "    print(f\"Fitting failed: {e}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "bbadff8c-b45f-418e-94de-3b4d7e5870d6",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 预测函数\n",
    "def predict(f, B_m, k1, alpha1, beta1):\n",
    "    return k1 * f**alpha1 * B_m**beta1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "dcd21eaa-9ed3-40d9-aa81-7f7bd61ba814",
   "metadata": {},
   "outputs": [],
   "source": [
    "k1, alpha1, beta1 = 1.0803644791050995, 1.4125288056297771, 2.0912986404843967\n",
    "\n",
    "P_pred = predict(f_test, B_m_test, k1, alpha1, beta1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7b12d384-0d59-47a2-b556-208962660fd3",
   "metadata": {},
   "source": [
    "## 测试"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "472adcc2-ad64-4550-be2b-cd0ba27ecd7f",
   "metadata": {},
   "source": [
    "均方差误差计算 $MSE = \\frac{1}{n} \\sum_{i=1}^{n} (P_{\\text{pred}, i} - P_{\\text{true}, i})^2$ 该误差表现形式为量纲的平方级别的形式\n",
    "\n",
    "平均绝对误差 $MAE = \\frac{1}{n} \\sum_{i=1}^{n} |P_{\\text{pred}, i} - P_{\\text{true}, i}|$ 该误差的表现形式为量纲同级别的\n",
    "\n",
    "前两个误差的表现形式和量纲是保持一致的,但是没有百分比的直观\n",
    "\n",
    "$MAPE = \\frac{1}{n} \\sum_{i=1}^{n} \\left| \\frac{P_{\\text{pred}, i} - P_{\\text{true}, i}}{P_{\\text{true}, i}} \\right| \\times 100$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "978b2c22-e0bb-4971-be15-35cdb69f67c8",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Use Cross-Validation k=5 \n",
    "kf = KFold(n_splits=5)\n",
    "mse_list = []\n",
    "mae_list = []\n",
    "\n",
    "for train_index, test_index in kf.split(f_data):\n",
    "    f_train, f_test = f_data[train_index], f_data[test_index]\n",
    "    B_m_train, B_m_test = B_m_data[train_index], B_m_data[test_index]\n",
    "    P_train, P_test = P_data[train_index], P_data[test_index]\n",
    "\n",
    "    # 组合训练数据\n",
    "    data_train = np.column_stack((f_train, B_m_train))\n",
    "    \n",
    "    # 拟合模型\n",
    "    popt, pcov = curve_fit(model_nonlinear_regression_describe, data_train, P_train, bounds=param_bounds, p0=initial_guess)\n",
    "\n",
    "    # 使用测试集进行预测\n",
    "    P_pred = predict(f_test, B_m_test, popt[0], popt[1], popt[2])\n",
    "\n",
    "    # 计算误差\n",
    "    mse = mean_squared_error(P_test, P_pred)\n",
    "    mae = mean_absolute_error(P_test, P_pred)\n",
    "\n",
    "    mse_list.append(mse)\n",
    "    mae_list.append(mae)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "4af280b4-bfae-46bc-bb90-624cf86e23d2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Average MSE: 11179068145.904816\n",
      "Average MAE: 56281.68750011655\n",
      "Mean Absolute Percentage Error (MAPE): 104.15568370950683%\n"
     ]
    }
   ],
   "source": [
    "print(f\"Average MSE: {np.mean(mse_list)}\")\n",
    "print(f\"Average MAE: {np.mean(mae_list)}\")\n",
    "mape = np.mean(np.abs((P_test - P_pred) / P_test)) * 100\n",
    "print(f\"Mean Absolute Percentage Error (MAPE): {mape}%\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "56922d70-5ac3-4d7f-b952-7c1bf115aeff",
   "metadata": {},
   "source": [
    "对于MAPE结果的解释: 有些预测结果显著偏离真实的结果大小,从而导致了MAPE的数值非常大."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c41c85fd-84c2-4eda-839a-ef29b7574a4b",
   "metadata": {},
   "source": [
    "## 可视化确认测试结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "8ebe0a08-c93b-44eb-83bc-67e2d87625ff",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj0AAAHFCAYAAAAZuEjoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB7UElEQVR4nO3dd3gUVRfH8e+mhwCB0BJ6qBKQDhJRQDooguW1AFJUpFhBqg1QEVFEQCCgUkQELBRpIihNEUSadFQMRUhEWgKB9Hn/GLOypG3CJptkf5/nyaMze2fm7LqYw73n3msxDMNAREREpIBzc3YAIiIiIrlBSY+IiIi4BCU9IiIi4hKU9IiIiIhLUNIjIiIiLkFJj4iIiLgEJT0iIiLiEpT0iIiIiEtQ0iMiIiIuQUmPSB40b948LBaL9cfDw4Py5cvTt29fTp8+nSsxVK5cmT59+liPN23ahMViYdOmTVm6z08//cSYMWO4dOmSQ+MD6NOnD5UrV3b4fbMrISGBwMBALBYLX331Vbbvs3DhQiZPnuy4wDKQ3f+uIvmRkh6RPGzu3Lls27aN9evX069fPxYtWsSdd95JTExMrsfSsGFDtm3bRsOGDbN03U8//cTYsWNzJOnJa1atWsXff/8NwOzZs7N9n9xMekRciYezAxCR9NWpU4fGjRsDcNddd5GUlMQbb7zB8uXL6dGjR5rXXL16lUKFCjk8lqJFi9KsWTOH37cgmT17Nl5eXrRs2ZJ169bx119/Ub58eWeHJSL/Uk+PSD6SknScOHECMId3ChcuzP79+2nfvj1FihShTZs2AMTHx/Pmm29yyy234O3tTalSpejbty///POPzT0TEhIYPnw4gYGBFCpUiDvuuIMdO3akenZ6wyA///wzXbp0oUSJEvj4+FC1alVeeOEFAMaMGcOwYcMACA4Otg7XXX+Pzz//nNDQUPz8/ChcuDAdOnRgz549qZ4/b948atasibe3N7Vq1WL+/Pl2fWbdunWjUqVKJCcnp3rttttus+m5+vLLL7ntttvw9/enUKFCVKlShccff9yu55w5c4a1a9fSpUsXhg0bRnJyMvPmzUuz7cKFCwkNDaVw4cIULlyY+vXrW3uGWrVqxerVqzlx4oTNECek/9/g+PHjWCwWm+ft3LmTRx55hMqVK+Pr60vlypV59NFHrd8dEVeknh6RfOSPP/4AoFSpUtZz8fHx3HvvvfTv35+RI0eSmJhIcnIyXbt25YcffmD48OHcfvvtnDhxgtGjR9OqVSt27tyJr68vAP369WP+/PkMHTqUdu3aceDAAe6//34uX76caTzffvstXbp0oVatWkyaNImKFSty/Phx1q1bB8CTTz7JhQsX+OCDD1i6dClBQUEAhISEAPDWW2/xyiuv0LdvX1555RXi4+N59913ufPOO9mxY4e13bx58+jbty9du3blvffeIyoqijFjxhAXF4ebW8Z/d3v88cfp2rUrGzZsoG3bttbzR44cYceOHUydOhWAbdu28fDDD/Pwww8zZswYfHx8OHHiBBs2bLDrv828efNISkri8ccfp23btlSqVIk5c+bw8ssvW5MWgNdee4033niD+++/nxdffBF/f38OHDhgTUZmzJjBU089xbFjx1i2bJldz07L8ePHqVmzJo888ggBAQFEREQQFhZGkyZNOHToECVLlsz2vUXyLUNE8py5c+cagLF9+3YjISHBuHz5srFq1SqjVKlSRpEiRYzIyEjDMAyjd+/eBmDMmTPH5vpFixYZgLFkyRKb87/88osBGDNmzDAMwzAOHz5sAMbgwYNt2n322WcGYPTu3dt6buPGjQZgbNy40XquatWqRtWqVY1r166l+17effddAzDCw8Ntzp88edLw8PAwnn32WZvzly9fNgIDA42HHnrIMAzDSEpKMsqWLWs0bNjQSE5OtrY7fvy44enpaVSqVCndZxuGYSQkJBhlypQxunfvbnN++PDhhpeXl3Hu3DnDMAxj4sSJBmBcunQpw/ulJTk52ahWrZpRrlw5IzEx0TAMwxg9erQBGN9//7213Z9//mm4u7sbPXr0yPB+d999d5rvK63/BoZhGOHh4QZgzJ07N917JiYmGleuXDH8/PyMKVOmZHpPkYLIpYe3tmzZQpcuXShbtiwWi4Xly5dn+R6GYTBx4kRq1KiBt7c3FSpU4K233nJ8sOKSmjVrhqenJ0WKFOGee+4hMDCQb775hjJlyti0e+CBB2yOV61aRbFixejSpQuJiYnWn/r16xMYGGgdHtm4cSNAqvqghx56CA+PjDuCf/vtN44dO8YTTzyBj49Plt/bt99+S2JiIr169bKJ0cfHh5YtW1pjPHr0KGfOnKF79+42PSaVKlXi9ttvz/Q5Hh4e9OzZk6VLlxIVFQVAUlISn376KV27dqVEiRIANGnSxPrev/jiiyzNktu8eTN//PEHvXv3xt3dHYC+fftisViYM2eOtd369etJSkri6aeftvve2XXlyhVGjBhBtWrV8PDwwMPDg8KFCxMTE8Phw4dz/PkieZFLJz0xMTHUq1ePadOmZfsezz//PB9//DETJ07kyJEjrFy5kqZNmzowSnFl8+fP55dffmHPnj2cOXOGffv20bx5c5s2hQoVomjRojbn/v77by5duoSXlxeenp42P5GRkZw7dw6A8+fPAxAYGGhzvYeHhzUZSE9KbVB2C3VTZjk1adIkVYyff/55pjGmdy4tjz/+OLGxsSxevBgwE66IiAj69u1rbdOiRQuWL19uTcTKly9PnTp1WLRoUab3T6nHue+++7h06RKXLl3C39+fO+64gyVLllhnrt3sZ5YV3bt3Z9q0aTz55JN8++237Nixg19++YVSpUpx7dq1HH++SF7k0jU9nTp1olOnTum+Hh8fzyuvvMJnn33GpUuXqFOnDhMmTKBVq1YAHD58mLCwMA4cOEDNmjVzKWpxJbVq1bLO3krP9b0fKUqWLEmJEiVYu3ZtmtcUKVIEwJrYREZGUq5cOevriYmJ1mQjPSl1RX/99VeG7dKTUlPy1VdfUalSpXTbXR/jjdI6l5aQkBCaNm3K3Llz6d+/P3PnzqVs2bK0b9/epl3Xrl3p2rUrcXFxbN++nfHjx9O9e3cqV65MaGhomveOiopiyZIlwH+9RTdauHAhgwYNsvnMKlSoYFfs10vpUYuLi7M5n5IgXh/TqlWrGD16NCNHjrSej4uL48KFC1l+rkhB4dI9PZnp27cvW7duZfHixezbt4///e9/dOzYkd9//x2AlStXUqVKFVatWkVwcDCVK1e2Fm6KONM999zD+fPnSUpKonHjxql+UpL0lAT+s88+s7n+iy++IDExMcNn1KhRg6pVqzJnzpxUv4Sv5+3tDZCqd6FDhw54eHhw7NixNGNMSfZq1qxJUFAQixYtwjAM6/UnTpzgp59+su8Dwfzz/PPPP/Pjjz+ycuVKm6GotGJu2bIlEyZMAEhzNlmKhQsXcu3aNd544w02btyY6qdkyZLWIa727dvj7u5OWFhYhrF6e3un2RuTshDjvn37bM6vWLHC5thisWAYhvWzT/Hxxx+TlJSU4bNFCjKX7unJyLFjx1i0aBF//fUXZcuWBWDo0KGsXbuWuXPn8tZbb/Hnn39y4sQJvvzyS+bPn09SUhKDBw/mwQcftHvGh0hOeOSRR/jss8/o3Lkzzz//PE2bNsXT05O//vqLjRs30rVrV+677z5q1apFz549mTx5Mp6enrRt25YDBw4wceLEVENmaZk+fTpdunShWbNmDB48mIoVK3Ly5Em+/fZbayJ16623AjBlyhR69+6Np6cnNWvWpHLlyrz++uu8/PLL/Pnnn3Ts2JHixYvz999/s2PHDvz8/Bg7dixubm688cYbPPnkk9x3333069ePS5cuMWbMGLuHtwAeffRRhgwZwqOPPkpcXJzNatNgzqr666+/aNOmDeXLl+fSpUtMmTIFT09PWrZsme59Z8+eTfHixRk6dGiatU29evVi0qRJ/Prrr9SrV4+XXnqJN954g2vXrvHoo4/i7+/PoUOHOHfuHGPHjrV+ZkuXLiUsLIxGjRrh5uZG48aNCQwMpG3btowfP57ixYtTqVIlvv/+e5YuXWrzzKJFi9KiRQveffddSpYsSeXKldm8eTOzZ8+mWLFidn9mIgWOkwup8wzAWLZsmfX4iy++MADDz8/P5sfDw8M6q6Rfv34GYBw9etR63a5duwzAOHLkSG6/BSlAUmZv/fLLLxm26927t+Hn55fmawkJCcbEiRONevXqGT4+PkbhwoWNW265xejfv7/x+++/W9vFxcUZL774olG6dGnDx8fHaNasmbFt2zajUqVKmc7eMgzD2LZtm9GpUyfD39/f8Pb2NqpWrZpqNtioUaOMsmXLGm5ubqnusXz5cuOuu+4yihYtanh7exuVKlUyHnzwQeO7776zucfHH39sVK9e3fDy8jJq1KhhzJkzx+jdu3ems7eu1717dwMwmjdvnuq1VatWGZ06dTLKlStneHl5GaVLlzY6d+5s/PDDD+ne79dffzUA44UXXki3zZEjRwzAZpba/PnzjSZNmlj/uzRo0MBm5tWFCxeMBx980ChWrJhhsViM6/9XHRERYTz44INGQECA4e/vb/Ts2dPYuXNnqtlbf/31l/HAAw8YxYsXN4oUKWJ07NjROHDggN3/XUUKIothXNdf7MIsFgvLli2jW7dugLlgWo8ePTh48GCqLvDChQsTGBjI6NGjeeutt0hISLC+du3aNQoVKsS6deto165dbr4FERERyYCGt9LRoEEDkpKSOHv2LHfeeWeabZo3b05iYiLHjh2jatWqgDmNF8iwMFNERERyn0v39Fy5csW6wm2DBg2YNGkSd911FwEBAVSsWJGePXuydetW3nvvPRo0aMC5c+fYsGEDt956K507dyY5OZkmTZpQuHBhJk+eTHJyMk8//TRFixa1rkgrIiIieYNLJz2bNm3irrvuSnW+d+/ezJs3j4SEBN58803mz5/P6dOnKVGiBKGhoYwdO9ZanHnmzBmeffZZ1q1bh5+fH506deK9994jICAgt9+OiIiIZMClkx4RERFxHVqnR0RERFyCkh4RERFxCS43eys5OZkzZ85QpEiRNJfvFxERkbzHMAwuX75M2bJlcXPLXp+NyyU9Z86cydaeNyIiIuJ8p06dyvamvS6X9KRstHjq1Cm7ltkXERER54uOjqZChQrW3+PZ4XJJT8qQVtGiRZX0iIiI5DM3U5qiQmYRERFxCU5NesLCwqhbt6611yU0NJRvvvkm3fabNm3CYrGk+jly5EguRi0iIiL5kVOHt8qXL8/bb79NtWrVAPjkk0/o2rUre/bsoXbt2uled/ToUZuhqVKlSuV4rCIiIpK/OTXp6dKli83xuHHjCAsLY/v27RkmPaVLl6ZYsWI5GltSUpLN7uki+Zmnpyfu7u7ODkNExKnyTCFzUlISX375JTExMYSGhmbYtkGDBsTGxhISEsIrr7yS5v5ZKeLi4oiLi7MeR0dHZ3hvwzCIjIzk0qVLWYpfJK8rVqwYgYGBWp9KRFyW05Oe/fv3ExoaSmxsLIULF2bZsmWEhISk2TYoKIgPP/yQRo0aERcXx6effkqbNm3YtGkTLVq0SPOa8ePHM3bsWLvjSUl4SpcuTaFChfQLQvI9wzC4evUqZ8+eBcw/RyIirsjpG47Gx8dz8uRJLl26xJIlS/j444/ZvHlzuonPjbp06YLFYmHFihVpvp5WT0+FChWIiopKNWU9KSmJ3377jdKlS1OiRInsvymRPOj8+fOcPXuWGjVqaKhLRPKd6Oho/P390/z9bS+n9/R4eXlZC5kbN27ML7/8wpQpU5g1a5Zd1zdr1owFCxak+7q3tzfe3t523SulhqdQoUJ2tRfJT1K+1wkJCUp6RMQl5bl1egzDsOmZycyePXsc3l2vIS0piPS9FhFX59SenpdeeolOnTpRoUIFLl++zOLFi9m0aRNr164FYNSoUZw+fZr58+cDMHnyZCpXrkzt2rWJj49nwYIFLFmyhCVLljjzbYiIiORbSckGO8IvcPZyLKWL+NA0OAB3t4L5lySnJj1///03jz32GBEREfj7+1O3bl3Wrl1Lu3btAIiIiODkyZPW9vHx8QwdOpTTp0/j6+tL7dq1Wb16NZ07d3bWW8hXWrVqRf369Zk8eXKeuOeYMWNYvnw5e/fudVg8IiJiv7UHIhi78hARUbHWc0H+PozuEkLHOgVv0oNTk57Zs2dn+Pq8efNsjocPH87w4cNzMKL8q0+fPly6dInly5c7OxQb8+bNo2/fvqnOf/TRRwwdOpRnn33Wei6vvgcRkYJo7YEIBi7YzY2zmSKjYhm4YDdhPRvalfjkp54ipxcyS8FXtGhRjh49anPO398fX19fChcu7KSoRERcV1KywdiVh1IlPAAGYAHGrjxEu5DADBOY/NZTlOcKmcUxYmJi6NWrF4ULFyYoKIj33nsvVZv4+HiGDx9OuXLl8PPz47bbbmPTpk3W18+fP8+jjz5K+fLlKVSoELfeeiuLFi3KciwWi4XAwECbH19fX8aMGUP9+vUBc6jrk08+4euvv7buqXZ9LCIi4jg7wi/YJCo3MoCIqFh2hF9It01KT9GN90npKVp7IMJR4TqMenoyYxhw9apznl2oEGRzxs2wYcPYuHEjy5YtIzAwkJdeeoldu3ZZkwyAvn37cvz4cRYvXkzZsmVZtmwZHTt2ZP/+/VSvXp3Y2FgaNWrEiBEjKFq0KKtXr+axxx6jSpUq3HbbbQ56k6ahQ4dy+PBhoqOjmTt3LgABAQEOfYaIiJjOXk4/4bGnXWY9RQAvLdtP61vK4OWRd/pXlPRk5upVcNYQzJUr4OeXjcuuMHv2bObPn28tCv/kk08oX768tc2xY8dYtGgRf/31F2XLlgXMxGPt2rXMnTuXt956i3LlyjF06FDrNc8++yxr167lyy+/zFLSExUVZTOMVbhwYSIjI23aFC5cGF9fX+Li4ggMDMzyexYREfuVLuJzU+0y6ykCuBCTQLPx3/PWfXXyzFCXkp4C6NixY8THx9vsYRYQEEDNmjWtx7t378YwDGrUqGFzbVxcnHU16qSkJN5++20+//xzTp8+bV3d2i+LiViRIkXYvXu39djNLe9k/SIirqhpcABB/j5ERsWm2VtjAQL9zaLktNjbU3QhJj5LRdE5TUlPZgoVMntcnPXsbLBnZ5Hk5GTc3d3ZtWtXqtV5U3pl3nvvPd5//30mT57Mrbfeip+fHy+88ALx8fFZisfNzc266raIiDifu5uF0V1CGLhgNxawSXxSiipGdwlJt4jZ3p6iFPYURecGJT2ZsViyNcTkTNWqVcPT05Pt27dTsWJFAC5evMhvv/1Gy5YtAXOn+qSkJM6ePcudd96Z5n1++OEHunbtSs+ePQEzUfr999+pVatWjsTt5eVFUlJSjtxbRERsdawTRFjPhqlmXwXaMfsqs56i611fFB1a1bn7WirpKYAKFy7ME088wbBhwyhRogRlypTh5ZdfthlWqlGjBj169KBXr1689957NGjQgHPnzrFhwwZuvfVWOnfuTLVq1ViyZAk//fQTxYsXZ9KkSURGRuZY0lO5cmW+/fZbjh49SokSJfD398fT0zNHniUiImbi0y4kMMvr7FzfU2Qve4fEcpKKKwqod999lxYtWnDvvffStm1b7rjjDho1amTTZu7cufTq1YsXX3yRmjVrcu+99/Lzzz9ToUIFAF599VUaNmxIhw4daNWqFYGBgXTr1i3HYu7Xrx81a9akcePGlCpViq1bt+bYs0RExOTuZiG0agm61i9HaNUSdg9BpfQUBfjZ95fTrA6J5QSLYU8BSAGS0db0sbGxhIeHExwcjI+P8//jiDiSvt8ikhPiE5NpNv57LsSkXe+ZUhT944jWN1XTk9Hvb3upp0dERESyzcvDjbfuq4OF/4qgU9hTFJ2blPSIiIjITUkZ6gr0t+1FDvT3yTPT1UGFzCIiIuIA2S2Kzk1KekRERMQhUoqi8yoNb4mIiIhLUNIjIiIiLkFJj4iIiLgEJT0iIiLiEpT0iIiIiEtQ0iNZNmbMGOrXr2897tOnT45uT5Ge48ePY7FY2Lt3b64/Oy+aN28exYoVc3YYIiJ5lpKeAqJPnz5YLBYsFguenp5UqVKFoUOHEhMTk+PPnjJlCvPmzbOrbUFJVJ566inc3d1ZvHhxlq7btGkTFouFS5cu5UxgIiKSLiU9OSQp2WDbsfN8vfc0246dJyk557c469ixIxEREfz555+8+eabzJgxg6FDh6bZNiEhwWHP9ff3d6kehqtXr/L5558zbNgwZs+e7exwRETETkp6csDaAxHcMWEDj360necX7+XRj7Zzx4QNrD0QkaPP9fb2JjAwkAoVKtC9e3d69OjB8uXLgf+GpObMmUOVKlXw9vbGMAyioqJ46qmnKF26NEWLFqV169b8+uuvNvd9++23KVOmDEWKFOGJJ54gNjbW5vUbh7eSk5OZMGEC1apVw9vbm4oVKzJu3DgAgoODAWjQoAEWi4VWrVpZr5s7dy61atXCx8eHW265hRkzZtg8Z8eOHTRo0AAfHx8aN27Mnj17Mvw8Ro0aRbNmzVKdr1u3LqNHjwbMnpemTZvi5+dHsWLFaN68OSdOnMjwvl9++SUhISGMGjWKrVu3cvz4cZvX4+LiGD58OBUqVMDb25vq1asze/Zsjh8/zl133QVA8eLFsVgs9OnTB4DKlSszefJkm/vUr1+fMWPGWI8nTZrErbfeip+fHxUqVGDQoEFcuXIlw1hFROQ/SnocbO2BCAYu2E1ElG1iEBkVy8AFu3M88bmer6+vTY/OH3/8wRdffMGSJUusw0t33303kZGRrFmzhl27dtGwYUPatGnDhQsXAPjiiy8YPXo048aNY+fOnQQFBaVKRm40atQoJkyYwKuvvsqhQ4dYuHAhZcqUAczEBeC7774jIiKCpUuXAvDRRx/x8ssvM27cOA4fPsxbb73Fq6++yieffAJATEwM99xzDzVr1mTXrl2MGTMm3V6sFD169ODnn3/m2LFj1nMHDx5k//799OjRg8TERLp160bLli3Zt28f27Zt46mnnsJiyXjJ9NmzZ9OzZ0/8/f3p3Lkzc+fOtXm9V69eLF68mKlTp3L48GFmzpxJ4cKFqVChAkuWLAHg6NGjREREMGXKlAyfdT03NzemTp3KgQMH+OSTT9iwYQPDhw+3+3oREZdnuJioqCgDMKKiolK9du3aNePQoUPGtWvXsnXvxKRko9lb3xmVRqxK86fyiFVGs7e+MxKTkm/2baTSu3dvo2vXrtbjn3/+2ShRooTx0EMPGYZhGKNHjzY8PT2Ns2fPWtt8//33RtGiRY3Y2Fibe1WtWtWYNWuWYRiGERoaagwYMMDm9dtuu82oV69ems+Ojo42vL29jY8++ijNOMPDww3A2LNnj835ChUqGAsXLrQ598YbbxihoaGGYRjGrFmzjICAACMmJsb6elhYWJr3ul7dunWN119/3Xo8atQoo0mTJoZhGMb58+cNwNi0aVO619/ot99+Mzw9PY1//vnHMAzDWLZsmVGhQgUjKSnJMAzDOHr0qAEY69evT/P6jRs3GoBx8eJFm/OVKlUy3n//fZtz9erVM0aPHp1uLF988YVRokQJ6/HcuXMNf3//dNvf7PdbRMSZMvr9bS/19DjQjvALqXp4rmcAEVGx7Ai/kCPPX7VqFYULF8bHx4fQ0FBatGjBBx98YH29UqVKlCpVynq8a9curly5QokSJShcuLD1Jzw83No7cvjwYUJDQ22ec+Px9Q4fPkxcXBxt2rSxO+5//vmHU6dO8cQTT9jE8eabb9rEUa9ePQoVKmRXHCl69OjBZ599BoBhGCxatIgePXoAEBAQQJ8+fejQoQNdunRhypQpRERk3BM3e/ZsOnToQMmSJQHo3LkzMTExfPfddwDs3bsXd3d3WrZsaff7t9fGjRtp164d5cqVo0iRIvTq1Yvz58/nSrG6iORdzqghza+04agDnb2cfsKTnXZZdddddxEWFoanpydly5bF09PT5nU/Pz+b4+TkZIKCgti0aVOqe2W3MNnX1zfL1yQnJwPmENdtt91m85q7uztgJizZ0b17d0aOHMnu3bu5du0ap06d4pFHHrG+PnfuXJ577jnWrl3L559/ziuvvML69evTrAVKSkpi/vz5REZG4uHhYXN+9uzZtG/fPlvvH8yhqxvf4/VDkydOnKBz584MGDCAN954g4CAAH788UeeeOIJhxali0j+svZABGNXHrL5C3eQvw+ju4TQsU6QEyPLm5T0OFDpIj4ObZdVfn5+VKtWze72DRs2tP4Cr1y5cpptatWqxfbt2+nVq5f13Pbt29O9Z/Xq1fH19eX777/nySefTPW6l5cXYCYKKcqUKUO5cuX4888/rb0wNwoJCeHTTz/l2rVr1sQiozhSlC9fnhYtWvDZZ59x7do12rZta60vStGgQQMaNGjAqFGjCA0NZeHChWkmPWvWrOHy5cvs2bPHmowBHDlyhB49enD+/HluvfVWkpOT2bx5M23btrXr/QOUKlXKppcpOjqa8PBw6/HOnTtJTEzkvffew83N7KD94osvMn3/IlJwpdSQ3vhXwpQa0rCeDZX43EDDWw7UNDiAIH8f0iuDtWBm4E2DA3IzrHS1bduW0NBQunXrxrfffsvx48f56aefeOWVV9i5cycAzz//PHPmzGHOnDn89ttvjB49moMHD6Z7Tx8fH0aMGMHw4cOZP38+x44dY/v27dap3aVLl8bX15e1a9fy999/ExUVBZizy8aPH8+UKVP47bff2L9/P3PnzmXSpEmA2WPj5ubGE088waFDh1izZg0TJ06063326NGDxYsX8+WXX9KzZ0/r+fDwcEaNGsW2bds4ceIE69at47fffqNWrVpp3mf27Nncfffd1KtXjzp16lh/HnjgAUqVKsWCBQuoXLkyvXv35vHHH2f58uWEh4ezadMma4JSqVIlLBYLq1at4p9//rHOvmrdujWffvopP/zwAwcOHKB37942iVXVqlVJTEzkgw8+4M8//+TTTz9l5syZdr1/ESl4kpINxq48lCrhAaznxq48pKGuGyjpcSB3Nwuju4QApEp8Uo5HdwnB3S3j2UG5xWKxsGbNGlq0aMHjjz9OjRo1eOSRRzh+/Li1N+Thhx/mtddeY8SIETRq1IgTJ04wcODADO/76quv8uKLL/Laa69Rq1YtHn74Yc6ePQuAh4cHU6dOZdasWZQtW5auXbsC8OSTT/Lxxx8zb948br31Vlq2bMm8efOsU9wLFy7MypUrOXToEA0aNODll19mwoQJdr3P//3vf5w/f56rV6/aTK0vVKgQR44c4YEHHqBGjRo89dRTPPPMM/Tv3z/VPf7++29Wr17NAw88kObneP/991sTu7CwMB588EEGDRrELbfcQr9+/ax1N+XKlWPs2LGMHDmSMmXK8MwzzwDmjLcWLVpwzz330LlzZ7p160bVqlWtz6hfvz6TJk1iwoQJ1KlTh88++4zx48fb9f5FpOBxdg1pfmUxslsskU9FR0fj7+9PVFQURYsWtXktNjaW8PBwgoOD8fHJ/hCUxlglL3LU91tEnO/rvad5fvHeTNtNeaQ+XeuXy/mAckFGv7/tpZqeHNCxThDtQgLZEX6Bs5djKV3EHNLKKz08IiKSvzm7hjS/UtKTQ9zdLIRWLeHsMEREpABKqSGNjIpNs67HAgTmoRrSvEI1PSIiIvlMfqshzSuU9IiIiORDHesEEdazIYH+tkNYgf4+mq6eDg1vpcHFarvFReh7LVLwqIY0a5T0XCdlBeOrV69me2Vdkbzq6tWrAKlW6haR/E01pPZT0nMdd3d3ihUrZl1TplChQpnuuC2S1xmGwdWrVzl79izFihWzWfRQRMSVODXpCQsLIywsjOPHjwNQu3ZtXnvtNTp16pTuNZs3b2bIkCEcPHiQsmXLMnz4cAYMGOCwmAIDAwGsiY9IQVGsWDHr91tExBU5NekpX748b7/9tnW/qE8++YSuXbuyZ88eateunap9eHg4nTt3pl+/fixYsICtW7cyaNAgSpUqleZKudlhsVgICgqidOnS2shRCgxPT0/18IiIy8tzKzIHBATw7rvv8sQTT6R6bcSIEaxYsYLDhw9bzw0YMIBff/2Vbdu22XV/R6zoKCIiIrnLEb+/88yU9aSkJBYvXkxMTAyhoaFpttm2bRvt27e3OdehQwd27typXhkRERHJkNMLmffv309oaCixsbEULlyYZcuWERISkmbbyMhI60aYKcqUKUNiYiLnzp0jKCj1mgRxcXHExcVZj6Ojox37BkRERCRfcHpPT82aNdm7dy/bt29n4MCB9O7dm0OHDqXb/sbZVCmjc+nNsho/fjz+/v7WnwoVKjgueBEREck3nJ70eHl5Ua1aNRo3bsz48eOpV68eU6ZMSbNtYGAgkZGRNufOnj2Lh4cHJUqkvUbBqFGjiIqKsv6cOnXK4e9BRERE8j6nD2/dyDAMm+Go64WGhrJy5Uqbc+vWraNx48bpLrjm7e2Nt7e3w+MUERGR/MWpPT0vvfQSP/zwA8ePH2f//v28/PLLbNq0iR49egBmL02vXr2s7QcMGMCJEycYMmQIhw8fZs6cOcyePZuhQ4c66y2IiIhIPuHUnp6///6bxx57jIiICPz9/albty5r166lXbt2AERERHDy5Elr++DgYNasWcPgwYOZPn06ZcuWZerUqQ5bo0dEREQKrjy3Tk9O0zo9IiIi+U+BWqdHREREJCcp6RERERGXoKRHREREXIKSHhEREXGc776D9eudHUWalPSIiIjIzfvnH3jsMWjXDh5/HC5fdnZEqSjpERERkewzDJg3D265BRYsAIsFunVzdlRpynMrMouIiEg+8dtvMGAAbNxoHtetCx9+CLfd5ty40qGeHhEREcma+Hh4800zydm4EXx9YcIE2LkzzyY8oJ4eERERyYqtW+Gpp+DQIfO4fXsIC4MqVZwblx3U0yMiIiKZu3TJHMq64w4z4SlVyqzhWbs2XyQ8oJ4eERERyYhhwFdfwXPPQWSkee7xx+Gdd6BECefGlkVKekRERCRtJ07A00/D6tXmcY0aMGsWtGrl1LCyS8NbIiIiYisxEd5/H2rXNhMeT0947TX49dd8m/CAenpERETkert3Q79+5j/BrOGZNQtCQpwblwOop0dERETgyhV48UVo0sRMePz9zTV3Nm8uEAkPqKdHREREVq+GQYPg5Enz+OGHYfJkCAx0aliOpqRHRETEVUVGwvPPwxdfmMeVKplr7nTq5Ny4coiGt0RERFxNcrI5dHXLLWbC4+ZmDm0dPFhgEx5QT4+IiIhrOXTIXFF561bzuFEjMwFq2NC5ceUC9fSIiIi4gthYePVVqF/fTHj8/Mxp6du3u0TCA+rpERGRHJKUbLAj/AJnL8dSuogPTYMDcHezODss17RxI/TvD7//bh7fcw9Mnw4VKzo3rlympEdERBxu7YEIxqw4SGR0nPVcYFFvxtxbm451gpwYmYs5fx6GDYO5c83joCCYOhUeeAAsrpeAanhLREQcau2BCAYs2G2T8ABERscxYMFu1h6IcFJkLsQwzM1Ab7nlv4Rn4EA4fBgefNAlEx5Q0iMiIg6UlGwwcun+DNuMXLqfpGQjlyJyQceOQYcO8NhjcO6cuZXE1q0wY4a54KALU9IjIiIOs/3YeS5dTciwzaWrCWw/dj6XInIhCQnw9ttQpw6sXw/e3vDmm+bqyrff7uzo8gTV9IiIiMNs+/OcXe0W/Hyc5tVL5nA0LmT7dnMa+v5/e9lat4aZM6F6defGlceop0dERBzIvlqRbw78rdoeR4iOhmeeMXty9u+HEiXgk0/gu++U8KRBSY+IiDhMaNUSdrcdu/KQantuxrJl5kag06ebhcu9esGRI+Y/XbRQOTNKekRExGGaVSlBsUKedrWNiIplR/iFHI6oAPrrL7jvPrj/fjh9GqpWNWt4PvkESmrIMCNKekRExGHc3Sy8ff+tdrc/ezk2B6MpYJKS4IMPzN6d5cvBwwNeeskc1mrb1tnR5QtKekRExKE61glicFv76klKF/HJ4WgKiF9/Net2nnsOLl+G0FBzVta4ceDr6+zo8g0lPSIi4nDPtK5OYNH0ExoLEORvbk0hGbh6FUaMMDcF3bEDihY119v58Ue41f4eNTEp6REREYdzd7Mw5t4QLKSez5VyPLpLiPbiysi335pr7rzzjjm09cAD5orKAweCm359Z4c+NRERyREd6wQR1rMhgf62PT6B/j6E9WyoPbjSc/Ys9OgBHTtCeDiULw9ffw1ffQVlyzo7unxNixOKiEiO6VgniHYhgdpt3R6GYe6TNXQoXLxoTjt/7jl44w0oUsTZ0RUISnpERCRHubtZsrR+j0s6ehT694fNm83j+vXhww+hSROnhlXQaHhLRETEWeLi4PXXoW5dM+EpVAjefRd++UUJTw5QT4+IiIgz/PCDuV/WkSPmcceO5sys4GDnxlWAqadHREQkN128aCY7LVqYCU/p0rBoEaxZo4Qnhzk16Rk/fjxNmjShSJEilC5dmm7dunH06NEMr9m0aRMWiyXVz5GUTFlERG5KUrLBtmPn+XrvabYdO6/9sRzFMODzz6FWLfjoI/Pck0+a09AfeUT7ZeUCpw5vbd68maeffpomTZqQmJjIyy+/TPv27Tl06BB+fn4ZXnv06FGKFi1qPS5VqlROhysiUuCtPRDB2JWHiIj6b3uIIH8fRncJ0RTzm3H8OAwaBN98Yx7fcgvMmmX29kiucWrSs3btWpvjuXPnUrp0aXbt2kWLTL4IpUuXplixYjkYnYiIa1l7IIKBC3ZzY79ORFQsAxbsZqbW1sm6xESYPBlGjzZXV/byMvfLGjkSvL2dHZ3LyVM1PVFRUQAEBGS+LHmDBg0ICgqiTZs2bNy4Md12cXFxREdH2/yIiIitpGSDsSsPpUp4rjdy6X4NdWXFzp3QtCkMG2YmPC1amHtojR6thMdJ8kzSYxgGQ4YM4Y477qBOnTrptgsKCuLDDz9kyZIlLF26lJo1a9KmTRu2bNmSZvvx48fj7+9v/alQoUJOvQURkXxrR/gFmyGttFy6msC0DX/kUkT52JUrMHgw3HYb7NkDxYvDxx/Dxo3msJY4jcUwjDyRtj/99NOsXr2aH3/8kfLly2fp2i5dumCxWFixYkWq1+Li4oiLi7MeR0dHU6FCBaKiomxqgkREXNnrKw8yZ+vxTNsVK+TJrlfaaUXl9KxcCU8/DadOmcfdu8OkSVCmjHPjKgCio6Px9/e/qd/feaKn59lnn2XFihVs3LgxywkPQLNmzfj999/TfM3b25uiRYva/IiIyH+Skg2W7z1jV9tLVxPYEX4hhyPKh86cgf/9D+6910x4goNh7Vr47DMlPHmIU5MewzB45plnWLp0KRs2bCA4m+sT7Nmzh6AgFdeJiGTHjvALXIiJt7v92csZD4O5lORkCAszp6F/9RW4u8Pw4XDgAHTo4Ozo5AZOnb319NNPs3DhQr7++muKFClCZGQkAP7+/vj6+gIwatQoTp8+zfz58wGYPHkylStXpnbt2sTHx7NgwQKWLFnCkiVLnPY+RETys6wmMaWL+GTeyBUcOGDul/XTT+Zxkybmfln16zs1LEmfU5OesLAwAFq1amVzfu7cufTp0weAiIgITp48aX0tPj6eoUOHcvr0aXx9falduzarV6+mc+fOuRW2iEiBkpUkJsjf3CXdpV27Bm++Ce+8Y05JL1wYxo0za3nc3Z0dnWQgzxQy5xZHFEKJiBQkSckGd0zYQGRUbIZT1gGt1bNhg9m788e/s9i6doUPPgDNDM5xBaaQWUREnMfdzcLoLiEApDcnq1ghT9dOeM6dg969oU0bM+EpWxaWLoXly5Xw5CNKekREhI51ggjr2ZBAf9uhrmKFPBnctga7XmnnmgmPYcD8+eb6OvPnm/tjPf00HDoE993n7Ogki5xa0yMiInlHxzpBtAsJZEf4Bc5ejqV0EbN+x2XX5PnjDxgwAL7/3jyuU8fcKLRZM+fGJdmmpEdERKzc3SyEVi3h7DCcKz4eJk6EN96A2Fjw8TG3jnjxRfD0dHZ0chOU9IiIiKTYtg2eesqcjg7Qti3MnAlVqzo3LnEI1fSIiIhERcGgQdC8uZnwlCwJn34K69Yp4SlA1NMjIiKuyzDMWVjPPgsREea5Pn3M4a0SLj7MVwAp6REREdd06pQ5E2vlSvO4enVzKKt1a+fGJTlGw1siIuJakpJgyhRzv6yVK83i5FdegX37lPAUcOrpERER17Fnj1movHOnedy8OcyaBbVrOzcuyRXq6RERkYIvJgaGDTM3Bd25E/z9zaGsLVuU8LgQ9fSIiEjB9s03MHAgnDhhHj/0EEyeDEEuuMK0i1PSIyIiBdPff8MLL8DixeZxxYowYwbcfbdTwxLn0fCWiIgULMnJ8PHH5n5ZixeDmxsMHgwHDyrhcXHq6RERkYLj8GHo3x9++ME8btgQPvwQGjVyblySJ6inR0RE8r/YWHN/rHr1zISnUCGYNAl+/lkJj1ipp0dERPK3zZvN3p2jR83ju++G6dOhUiXnxiV5jnp6REQkf7pwAZ54Alq1MhOeMmXg88/NBQeV8EgalPSIiEj+YhiwcKG5ovKcOea5/v3hyBFzOrrF4tz4JM/S8JaIiOQf4eHmmjvffmseh4SYKyrfcYdz45J8QT09IiKS9yUkwDvvmKsnf/steHvDG2+Y20oo4RE7qadHRETyth07oF8/c0NQMGt4Zs2CGjWcGpbkP+rpERGRvOnyZXjuOWjWzEx4AgJg7lzYsEEJj2SLenpERCTv+fpreOYZ+Osv87hnT3PdnVKlnBuX5GtKekREJO84fRqefRaWLTOPq1Qxd0Nv1865cUmBoOEtERFxvqQkc0HBWrXMhMfDA0aOhP37lfCIw6inR0REnGvfPnjqKXPLCIDbbjP3y6pb17lxSYGjnh4REXGOa9dg1Chzb6yff4YiRWDaNNi6VQmP5Aj19IiISO5bvx4GDIA//zSP77sPPvgAypVzblxSoCnpERHJRFKywY7wC5y9HEvpIj40DQ7A3U1bHWTLP//AkCGwYIF5XK6cWcvTtatz4xKXoKRHROQ6NyY4F2PieGP1YSKiYq1tgvx9GN0lhI51gpwYaT5jGDBvHgwdam4UarGYs7TefNMc1hLJBUp6RET+tfZABGNXHrJJcNISGRXLwAW7CevZUImPPX77zRzK2rjRPK5XzyxUbtrUuXGJy1Ehs4gIZsIzcMHuTBMeAOPff45deYikZCPDti4tPt7syalb10x4fH1hwgT45RclPOIUdic9ycnJvPvuuzRv3pymTZvy0ksvERub+f8cRETyuqRkg7ErD5GV9MUAIqJi2RF+IafCyt+2boUGDeDVVyEuDtq3hwMHYPhw8PR0dnTiouxOeiZMmMDIkSPx8/MjKCiISZMm8dxzz+VkbCIiuWJH+AW7enjScvay/vJn49Ilcyjrjjvg0CFz24jPPoO1a83VlUWcyO6kZ968eXzwwQesW7eOr7/+muXLlzN//nwMQ127IpK/3UziUrqIjwMjyccMA774wlxRedYs89wTT8CRI9C9u1m4LOJkdic9J06c4J577rEed+jQAcMwOHPmTI4EJiKSW7KTuFgwZ3E1DQ5wfED5zYkT0KULPPwwREZCzZqwaRN8/LG5M7pIHmF30hMfH4+vr6/12GKx4OXlRVxcXI4EJiKSW5oGBxDk74O9fREp7UZ3CXHt9XoSE82dz0NCYPVqs1Zn9Gj49Vdo2dLZ0YmkkqUp66+++iqFChWyHsfHxzNu3Dj8/f2t5yZNmmT3/caPH8/SpUs5cuQIvr6+3H777UyYMIGaNWtmeN3mzZsZMmQIBw8epGzZsgwfPpwBAwZk5a2IiFi5u1kY3SWEgQt2Y4FMC5oDtU4P7N4N/fqZ/wS4805zWKtWLefGJZIBi2FnUU6rVq2wZDIma7FY2LBhg90P79ixI4888ghNmjQhMTGRl19+mf3793Po0CH8/PzSvCY8PJw6derQr18/+vfvz9atWxk0aBCLFi3igQceyPSZ0dHR+Pv7ExUVRdGiRe2OVUQKvrTW6Qny9+HVu0Mo7uelFZkBrlwxe3MmT4bkZChWDN55x6zfcdMqKJJzHPH72+6kJzf8888/lC5dms2bN9OiRYs024wYMYIVK1Zw+PBh67kBAwbw66+/sm3btkyfoaRHRDKiLScysHo1DBoEJ0+ax488Au+/D4GBzo1LXIIjfn/nqRWZo6KiAAjIoPBt27ZttG/f3uZchw4dmD17NgkJCXjesP5DXFycTd1RdHS0AyMWkfzEnoTG3c1CaNUSToowj4qIgOefhy+/NI8rVYKwMOjUyblxiWRRnkl6DMNgyJAh3HHHHdSpUyfddpGRkZQpU8bmXJkyZUhMTOTcuXMEBdmOsY8fP56xY8fmSMwikn+kN3Tl8rU5GUlOho8+ghEjICoK3N1h8GAYMwbSKUEQycvyzADsM888w759+1i0aFGmbW+sLUoZoUur5mjUqFFERUVZf06dOuWYgEUk30hvi4mIqFgGLNjN2gMRToosDzt4EFq0MBcajIqCxo3N7SPefVcJj+RbeaKn59lnn2XFihVs2bKF8uXLZ9g2MDCQyMhIm3Nnz57Fw8ODEiVSd0l7e3vj7e3t0HhFJO9LGcqKjI7ljVUHM5yRNXLpftqFBKp2ByA2FsaNM/fISkgwE5xx4+CZZ8yeHpF8zKlJj2EYPPvssyxbtoxNmzYRHByc6TWhoaGsXLnS5ty6deto3LhxqnoeEXFN9u6WnuLS1QSmbfiD59tWz+HI8riNG6F/f/j9d/O4SxeYNg0qVnRuXCIOYlfSs2/fPrtvWLduXbvbPv300yxcuJCvv/6aIkWKWHtw/P39rQshjho1itOnTzN//nzAnKk1bdo0hgwZQr9+/di2bRuzZ8+2a1hMRAq+lKGsrE5LnftTOM+0ruaavT3nz8PQoTBvnnkcFAQffAD336/tI6RAsSvpqV+/PhaLBcMwMl2rJykpye6Hh4WFAeYaQNebO3cuffr0ASAiIoKTKdMjgeDgYNasWcPgwYOZPn06ZcuWZerUqXat0SMiBVt2dktPcelqAjvCL7jWzC3DMDcDHTwYzp0zE5wBA2D8eLhu0VmRgsKupCc8PNz673v27GHo0KEMGzaM0NBQwJxG/t577/HOO+9k6eH2LBE0L+VvHtdp2bIlu1NWARUR+dfN7JYOLrZj+rFjMHAgrF9vHtepAx9+CP/+f12kILIr6alUqZL13//3v/8xdepUOnfubD1Xt25dKlSowKuvvkq3bt0cHqSIiD1uNmlxiR3TExLgvfdg7FizaNnb21xh+cUXwcvL2dGJ5KgsFzLv378/zYLj4OBgDh065JCgRESyI7tJiwVzP60Cv2P69u3w1FOwf7953KYNzJwJ1ao5Ny6RXJLldXpq1arFm2++SWzsf3+jiouL480336SWNpoTESfK6m7p4CI7pkdHm1POb7/dTHhKlIBPPjGHtpTwiAvJck/PzJkz6dKlCxUqVKBevXoA/Prrr1gsFlatWuXwAEVE7JXRbukpx8UKeXLpaoL1fIHfMX3ZMjPhOXPGPO7VyxzeKlnSuXGJOEG2Nhy9evUqCxYs4MiRIxiGQUhICN27d093Z/S8RBuOihR8GW050S4k0DU2FP3rLzPZ+fpr87haNXMoq00b58Ylkk0Fbpf13KCkR8Q1uOxu6UlJMGMGvPQSXLkCHh7m3lkvvwz/rn8mkh854vd3tvbe+vTTT7njjjsoW7YsJ06cAOD999/n65S/UYiIOFnKbuld65cjtGoJ10h4fv3VrNt57jkz4QkNhT174M03lfCIkI2kJywsjCFDhtCpUycuXrxoXYywePHiTJ482dHxiYhIZq5eheHDoVEj2LEDihaFsDD48Udz/R0RAbKR9HzwwQd89NFHvPzyy3h4/FcH3bhxY/anTIMUEZHc8e23ZmLz7rvm0NaDD8Lhw+bKym7Z6swXKbCy/CciPDycBg0apDrv7e1NTEyMQ4ISEZFMnD0LPXpAx44QHg4VKsCKFfDll1C2rLOjE8mTspz0BAcHs3fv3lTnv/nmG0JCQhwRk4iIpMcwYPZsuOUWWLjQ7M154QU4dMjcFV1E0pXldXqGDRvG008/TWxsLIZhsGPHDhYtWsT48eP5+OOPcyJGEREBOHoU+veHzZvN4/r14aOPoHFjp4Ylkl9kOenp27cviYmJDB8+nKtXr9K9e3fKlSvHlClTeOSRR3IiRhER1xYXB2+/DW+9BfHxUKgQvP46PP+8OSVdROxyU+v0nDt3juTkZEqXLu3ImHKU1ukRcV35cu2eH34w98s6csQ87tTJXIencmWnhiWS2xzx+zvLf0Vo3bo1S5cupVixYpS8bhnz6OhounXrxoYNG7IViIhITlqz7wyvfH2ACzH/bUERlAtbUGQ70bp40ZyGnlI2UKYMTJkCDz0EljyeqInkUVnu6XFzcyMyMjJV787Zs2cpV64cCQkJ6VyZN6inR8T1jF9ziFlbwtN8zQKE9WyYI4lPRtthpPs8w4DPPzeLk//+2zzXrx9MmADFizs8RpH8Ild7evbt22f990OHDhEZGWk9TkpKYu3atZQrVy5bQYiI5JQ1+yLSTXjA3IR07MpDtAsJdOhQ19oDEQxcsJsb/1YZGRXLwAW70060wsNh0CBYu9Y8rlULZs2CO+90WFwirszupKd+/fpYLBYsFgutW7dO9bqvry8ffPCBQ4MTEbkZSckGr3x9INN2EVGx7Ai/QGjVEg577tiVh1IlPGAmWRZuSLQSE2HyZHjtNbh2Dby8zL2yRowAb2+HxCQiWUh6wsPDMQyDKlWqsGPHDkqVKmV9zcvLi9KlS+Pu7p4jQYqIZMeO8AtciIm3q+3Zy7GZN8rCc68f0rqRwXWJ1oU/zULllPXPWrY0e3dq1nRYPCJisjvpqVSpEgDJyck5FoyIiCNlJZEpXcQnV5/rF3eV0q+NgMVzITnZrNeZOBH69lWhskgOyfLsrfHjx1OmTBkef/xxm/Nz5szhn3/+YcSIEQ4LTkTyhnw51Rv7E5kAP0+aBgfk2nPb/PEzr6+bSbnL/5gnevSASZMgHy3/IZIfZTnpmTVrFgsXLkx1vnbt2jzyyCNKekQKmGzNQMojmgYHEOTvk+FQE8CbXes4NIlLeW5kVKxNXU/py+cZ890sOv/2EwBGcDCWsDDo0MFhzxaR9GV5763IyEiCglL/j65UqVJEREQ4JCgRyRtSZiDdmDSkzEBaeyBv/5l3d7MwuksIGaUz/VsE07muYzfoTHkumEXLFiOZnnvW8N3HA+n8208kWtz4s+8gLAcOKOERyUVZTnoqVKjA1q1bU53funUrZbWzr0iBkdkMJDBnICUlZ3tR91zRsU4QYT0bEuRvO+RUws+LGd0bMqpzzmyUnPLc269F8NWC4by5bgZF469ysPwt/Pzlt1SZM93cTkJEck2Wh7eefPJJXnjhBRISEqxT17///nuGDx/Oiy++6PAARcQ5sjQDyUFTvXNKxzpBtAsJzN26pGvX6LhoGh1mvIMlMZHEQn6cGvoKt7wyFHdP7Zcl4gxZ/pM3fPhwLly4wKBBg4iPN6eC+vj4MGLECEaNGuXwAEXEOeyd+eTIqd45yd3NknvJ2fffw4AB8Mcf5tBat254fPABweXL587zRSRNWU56LBYLEyZM4NVXX+Xw4cP4+vpSvXp1vLWAlkiBYu/MJ0dO9c73zp2DF1+E+fPN47JlYdo0uO8+58YlIkA2kp4UhQsXpkmTJo6MRUTykPRmIKWwAIH+Pg6d6p1fp8ZjGGai8+KLcP68uc7O00/DuHGgPf5E8gy7kp7777+fefPmUbRoUe6///4M2y5dutQhgYmIc6XMQBq4YDcWsEl8UtKQ0V1CbjopSUl0vjsUybK9p3NtF3SHJVi//24OZW3YYB7feit8+CE0a+bYgEXkptmV9Pj7+2P5d4VQf3//HA1IRPKOlBlIN67TE+igZCStNYCul+HmnA5+bpYTrPh4cwXl11+HuDjw8YExY2DIEPD0dFisIuI4FsMw8vZ8UwdzxNb0Iq4mJ4ad0tuF/EYpw2g/jmjtkKGu9J6bcme7EqyffjL3yzp40Dxu1w7CwqBq1ZuOT0TS5ojf31lep0dEXEdSssG2Y+dZte8MAPfULUto1RIOGdJKbw2gG10/Nf5m3fTaQ5cuwcCBcMcdZsJTsiQsWADffquERyQfsGt4q0GDBtbhrczs3r37pgISkdyVXi/Omn1neOXrAzlSY5PZGkBpccTU+GyvPWQYsGQJPPccpKw837cvvPsulMjbaxSJyH/sSnq6detm/ffY2FhmzJhBSEgIoaGhAGzfvp2DBw8yaNCgHAlSRHJGWrUtAX6eNKxYjO8O/5OqfYSDamyyk8A4Ymp8ttYeOnnSnIm1apV5XL06zJoFd9110/GISO6yK+kZPXq09d+ffPJJnnvuOd54441UbU6dOuXY6EQkx6RX23IhJiHNhCeFgTkE1C4kMNvDXFlJYBw5NT5Law8lJcEHH8Arr0BMjFmcPHIkvPSSWbQsIvlOlmt6vvzyS3r16pXqfM+ePVmyZIlDghKRnJWVmpq03GyNTcoaQPamTI6YGm/Pcy2YQ3hNL50wp5wPHmwmPM2bw9695kwtJTwi+VaWkx5fX19+/PHHVOd//PFHfPQ/A5F8ITs1NTe6mRqbG3chT0+Qv49Dp6tn9FwL4Bsfy8KjX+J+W1PYuRP8/c2hrC1bICRnNiYVkdyT5RWZX3jhBQYOHMiuXbto9u/iW9u3b2fOnDm89tprDg9QRBzPEUXBN1tjk94aQCX8vOhavyztQgJzZEXm9J57X+SvjFsfhu+Zv8wTDz0EkydDkOMXRhQR58jWOj1ffPEFU6ZM4fDhwwDUqlWL559/noceeihL99myZQvvvvsuu3btIiIigmXLltkUTd9o06ZN3JVG8eDhw4e55ZZb7Hqm1ukRgW3HzvPoR9uzfX2Anye/vNzOmpDczDo+WbnWkesFpdwrKvwkjSe/TsnVy80XKlaEGTPg7ruzdV8RyRmO+P2drb23HnrooSwnOGmJiYmhXr169O3blwceeMDu644ePWrzhkuVKnXTsYi4kqbBAQT4edpMR8+K17vUtiYfx8/FsGjHSSKj46yvZ2Vqu727nztkFeXrn4tB6IalMHy4uf6Omxu88AKMHQuFC2f5fiKS92Wrp+fSpUt89dVX/PnnnwwdOpSAgAB2795NmTJlKFeuXPYCsVjs7um5ePEixYoVy9Zz1NMjYlqz7wyDFu7J8nXtQkpz4HR0hjVBWVrd2A4OWUX5eocPmysqp9QnNmpk7pfVsOFNxyoiOcMpKzLv27ePGjVqMGHCBN59910uXboEwLJlyxg1alS2gsiqBg0aEBQURJs2bdi4cWOGbePi4oiOjrb5ERHoXLcs/VsE292+hJ8X/e4M5rtDZzMtgrZrdWM73fQqyteLjYXRo6FePTPh8fODSZNg+3YlPCIuIMtJz5AhQ+jTpw+///67zWytTp06sWXLFocGd6OgoCA+/PBDlixZwtKlS6lZsyZt2rTJ8Lnjx4/H39/f+lOhQoUcjVEkPxnVOYQZ3RsS4Odlcz7I34cZ3RuyqF8zpjxSn0X9mrFtVBtW7Yuwe5q7o7aPyMoqyhnatMlMdl5/HRISzJqdgwfNaeke2RrpF5F8Jst/0n/55RdmzZqV6ny5cuWIjIx0SFDpqVmzJjVr1rQeh4aGcurUKSZOnEiLFi3SvGbUqFEMGTLEehwdHa3ER+Q6nesG0aFOYKYFwtuOnc/WNPebnSmWrVWUr3fhAgwbBnPmmMeBgTB1Kjz4INi5vY6IFAxZTnp8fHzSHCI6evSoUwqKmzVrxoIFC9J93dvbG29v71yMSCT/saeYOLvJy81ObS9Z2L4/v6meYxiwaJFZnPzPvytMDxgA48dDNmsCRSR/y/LwVteuXXn99ddJSDBnfVgsFk6ePMnIkSOzNAPLUfbs2UOQ1tEQyXFZTV6sqxvfxPYRaw9E8OIXe7P+nD//hI4doUcPM+EJCTFreMLClPCIuLAs9/RMnDiRzp07U7p0aa5du0bLli2JjIwkNDSUcePGZeleV65c4Y8//rAeh4eHs3fvXgICAqhYsSKjRo3i9OnTzJ8/H4DJkydTuXJlateuTXx8PAsWLGDJkiXa/kIkF1yMicu80Q1uZvuI9GZsXS/lztbnJCSYhcljx8K1a+DtDa++ag5veXllcCcRcQVZTnqKFi3Kjz/+yIYNG9i9ezfJyck0bNiQtm3bZvnhO3futFlsMKX2pnfv3sybN4+IiAhOnjxpfT0+Pp6hQ4dy+vRpfH19qV27NqtXr6Zz585ZfraI2C8p2eCN1YezdM0LbWtke7q6vXuDBV6/Ts+OHdCvH+zbZ754110wcybUqJGtGESk4MnSOj2JiYn4+Piwd+9e6tSpk5Nx5Rit0yOStoxWO87OCs5THqlP1/rZW7fL3ud99sRtNC/jZe6EPm2aWccTEADvvQe9e6tQWaQAyfUVmT08PKhUqRJJSUnZepiIOFd6iU1mqx1np4j5ZgqY7X2ex6qv4b3RcPq0eeKxx8yER6u0i0gasjy89corrzBq1CgWLFhAQED2CxRFJHell9jcWy+ID7eEpxpKioyKZeCC3YT1bJilBMaCOex0MwXMmT2vzOVzjP1uFrf9ts08UbWqOZSVjWF2EXEdWU56pk6dyh9//EHZsmWpVKkSfn5+Nq/v3r3bYcGJiGOkVxQcGRXLrC3haV5jYCYwY1ceYvOwuwjy9yEyKtauxQlTCouzu0Fo0+CANJ/nlpxEzz1rGLZlPkXir2F4eGAZNswsVvb1tSMyEXFlWU56unbtikXj5CL5hj3bOKQnZbXjXScuMrpLCAMX7MaSwXXXD4ndzAah7m6WVM+75Ww449dOo0HEUQAu1W1EsQVz4dZbM3kXIiKmbG04mp+pkFlcTXaKkG+UUpScViJTws+LrvXL0i4k0KZGyBEbhK49EMHbS3bz8DfzePKXZXgmJ3HFuxAnhr5C7bHDwd39pt6XiOQfuVrIfPXqVYYNG8by5ctJSEigbdu2TJ06lZIlS2brwSKSO252Gwj4r8amY50g2oVkvGVFZj1LKUNm7UICMx3q6hhxgA7zn8Py558AnO9wD8U+CqN2hfI3/Z5ExPXYnfSMHj2aefPm0aNHD3x8fFi0aBEDBw7kyy+/zMn4RAqc9Opcslv/kpmbmUWVVlFyZltWZGWD0HTv888/MGQILFhg9g6VLw/Tp1Pi3nuz9T5ERCALSc/SpUuZPXs2jzzyCAA9e/akefPmJCUl4a4uZhG7ZDSDasWvEdmqf8lMo0rFCfDz4kJMfJauS7XasZ1uaoNQw4B582DoUHOjUIsFnn0W3nwTihSxOwYRkbTYvffWqVOnuPPOO63HTZs2xcPDgzNnzuRIYCIFTUqdy429IBH/zqC68XzKlPG1ByJu6pkt392YbsJj+fenf4tggvxte4QC/X0yrb1JSjbYduw8X+89zbZj50lKNuzuWUrV7rffoHVrePxxM+GpVw+2b4cpU5TwiIhD2N3Tk5SUhNcNe9d4eHiQmJjo8KBEChp7t1W4XlbrX25kz95V12/jMLxjrSwNr6XXa/Xq3SEZTm9PNWQWHw8TJsC4cRAXZ049HzvW3B3d0zNL71lEJCN2Jz2GYdCnTx+8vb2t52JjYxkwYIDNWj1Lly51bIQiBUBmdS7psav+JQ32JFkBfp5sHnYXXh5mh29mtTrXy2jdn6cX7uapFsF8uCU81fT2VENmP/4ITz0Fh//d16tjR5gxA4KD7YpDRCQr7E56evfunepcz549HRqMSEF1szOosnq9PUnWhZgEdp24mKVkCuybnbXi1wimd2/AG6sP28Rh7Vkq7wv9+8OHH5ovlC4NkyfDI49ovywRyTF2Jz1z587NyThECrSbmUGVnetvqpg4E/bOziru582PI1rbDplVLo77V19C2+fh77/NC554At55x9woVEQkB2V5RWYRybr0tlXITEr9S6NKxdl27LxNvQ2Qbg1OtouJyXi3dchaQmUzZHbiBNzbC9asMY9r1jR7elq0sOt+IiI3S0mPSC5Ia1uFzKSkGffWC6LluxtteleKFTILfC9dTbCeu36Ke2ZJVnqbgtqzdUSWE6rERJg61dwf6+pV8PKCUaPMn+tqBEVEcprdU9ZFJGtunM7dLiSQ6d0bUtzPdhZkkL9PulPGUwqCbxxOunQ1wSbhAXNIacCC3azZF2FNsuC/5ClFeuvvpDel/sap8ykJVXqVN5Z/31PT4ADYtQtuuw1efNFMeFq0gF9/hTFjlPCISK7T3lsiOWDtgQjGrDhIZHSc9Zy/rwcW4NK1/5Z5KF7Ik3Hd6tC5btlUw0qNKhVP1cNjDwswvXsDOtcta/emn0nJBndM2JDhs4L8ffhxRGubvbUg7dlZH95fk3aLZ5hr7CQnQ7FiMHEi9O0Lbvq7lohkXa7uvSUi9ll7IIIB/yYE14u6lnpNq4tXExi0cA8z3Sx0rBNkM5Nq27Hz2Z7mfv09M9srC+yb7XX91PmOdYII69kwVUIV6O/DtKKnafS/NnDypHny0Ufh/fehTJksvxcREUdS0iPiQEnJBiOX7s/ydSOX7k+1AOHNTnO//p6ZTUu391nrD0Va73VjQlXu2iUaThqL21f/7sdXuTKEhZlr74iI5AHqZxZxoO3HzqeqtbHHpasJbD923ubc8XNXbyqWtO6ZHnuLk7/ee4ak5P8GtNzdLIQGF6fr9pU07tTcTHjc3WHYMDhwQAmPiOQpSnpEHGjbn+cccm1SssGiHSdzLZ6mwQEE+GW+5cP5mHh2hF/478TBg3DnnTBwIERFQePGsHOnue7OdSu1i4jkBUp6RBwq+6sJ/3XxmnWm1/Y/zxMZfXPDW1mJx93Nwn31y9nV9uzlWIiNNaegN2gAP/0EhQubRcvbt0P9+jcRr4hIzlFNj4gDhVYtwbSNf2Tr2uV7z7B87xkAivk6ZqPNrGwx0TYkkNlbj2fartqBHfDQCPj9d/PEvffCtGlQoUI2oxQRyR3q6RFxoGZVSlgXDrwZl65lvS7oRsULedKsiv1JT2br7wRcjWL6+qnUfux+M+EJCoIlS2D5ciU8IpIvKOkRcSB3Nwtv33+rs8MAYPz9t6aamp6RdBc0NAzuP7CB9R8P5O7d68wNQQcNMndGv/9+bRAqIvmGkh4RB+tYJ4iZPRsSWPTmNhm11415TTFfTwa3rUG7kMAs3ytl/Z3Af1eHrngxgk8/f5VJqydR4lo01KkDW7fC9Ong7++I8EVEco1WZBbJIdevsLz2QCTfHIjM1n2K+XraDHcF+fvwSJOKVC5ZyLpyc9imP5i79XiqdjeuvGx37HHx/PXyG5Sf9i7ucXEYPj5YXnsNhg4FT8fUG4mIZIVWZBbJw1IWBVx7ICLbCQ/A9O4NcXOzpLui8toDEUz+7vdUG4um7JkV1rNh1hKf7dtxf+opKu3/d5HFNm2wzJwJ1apl+z2IiOQFSnpEclBSssHYlYeydW3KTujNqpZItzYn5f5pddca/95j7MpDqVZ7TlNUFLz0krmKsmFAiRLm9hE9e6puR0QKBNX0iOSQpGSDeVtT75Bujxt3Qr9xx/aUVZEz2zPL4L89s9JvZMDSpRASAjNmmMe9e8ORI/DYY0p4RKTAUE+PiIMlJRtM2/AHc7eG2z31vJCXO1fjk6zHgdfV42S0U3pcYrJd9093b61Tp+CZZ2DFCvO4WjWYNQtat7brviIi+YmSHpGbcH2xcukiPlyMieOl5QeyvP/WR70a42ZJXbez9kAEAxfsTrde54W2Ney6f6q9tZKSzBlYL78MV66AhweMGGEe+/pmKXYRkfxCSY9INqXVA5NV1rqdKqnrduyp11n8y0kCi3rzd3Rcmu1S7t80OOC/k7/+Cv36wS+/mMe33w4ffgi1a2f7fYiI5Aeq6RGXkVZdTHq1MplJ6YG52YQH/qvbuZG99TqPNq1oc7907x8TA8OHQ6NGZsJTtKhZtPzDD0p4RMQlqKdHXEJavTIp20VcPxRlz9o2GfXAZEVgJs9Ktw7nBpVL+hHWs2Gq92dz/7VrzZ3Qjx83X/zf/8wNQoOyvoaPiEh+paRHCrz06mLSqrtJb22b62t3zl2Ou6keHoBX765Fn+bBNj08N9YHlfTztutepYv4EFq1BO1CAm2ubxocgPs/Z6F7d1i0yGxcoYI5Q+uee24qfhGR/EhJjxRoWe2VSWttG0fU7lwvyN8nVcKT1jMCi/pQrJAnUVcT7KrXSVkM0XwjBsyZA8OGwcWL4OYGzz8Pr78OhQs75H2IiOQ3SnqkQMusLiYt169tE3UtPs1eouyykLqGJ72eqL+jY63nLP/Gdf19SONegLm+Tv/+sGWLedygAXz0kVnLIyLiwpxayLxlyxa6dOlC2bJlsVgsLF++PNNrNm/eTKNGjfDx8aFKlSrMnDkz5wOVfMveupi0REZdc0jtTorihTzTHDbLbIZW8UKelClqO9QV6O+TenuJuDgYOxbq1TMTnkKFYOJE2LFDCY+ICE7u6YmJiaFevXr07duXBx54INP24eHhdO7cmX79+rFgwQK2bt3KoEGDKFWqlF3Xi+tJtT5NFpy7Eu+QIa1ivp70bV6ZZ1pXT9UrY88MrYtXE/jsydvSXMfHassWs3fnyBHzuHNncx2eypVvOn4RkYLCqUlPp06d6NSpk93tZ86cScWKFZk8eTIAtWrVYufOnUycOFFJj6SpaXAAQf4+REbF2t1jYwH8C3kybeMfN/38p++qyu1VSnIuJo4d4RdSJSv29kSduxJH1/rlUr9w8aI5Df3jj83jMmVg6lRzdpa2jxARsZGvanq2bdtG+/btbc516NCB2bNnk5CQgKenp5Mik7woKdlg+7HzNKjgzxo7e2xSameyuqJyehbtOMn0jcesxzdOibe3JypVO8OAzz83i5PPnjXPPfUUvP02FC/ukNhFRAqafJX0REZGUqZMGZtzZcqUITExkXPnzhGUxpojcXFxxMXFWY+jo6NzPE5xvrUHIhi5dH+GyUvxQp6pEpzSRby4Ep9ETFxSutdlxYUY2+dHRMUyYMFuXmhTnWfbVM+0JyrNFZXDw2HQIHPtHYBatcwVle+4wyExi4gUVPkq6QGw3NBlbxhGmudTjB8/nrFjx+Z4XJJ3rD0QwYAFuzNsM7htDZ5pXQ3AurbN8XNX+WTb8SwnPGnNrMpsKG3y978zb9tx3r7/VkZ3CWHggt2Zz9BKTIT334fRo+HaNfDygldeMYe3vO1b00dExJXlq20oAgMDiYyMtDl39uxZPDw8KFGiRJrXjBo1iqioKOvPqVOnciNUcZKkZIMxKw5m2m7xLyeB/9a28fZwY/J3v3EhJj7Lz/QvZDusGuDnZdd1l64mWJOzsJ4NCfS3HcKymaH1yy/QpImZ4Fy7Bq1awf798OqrSnhEROyUr3p6QkNDWblypc25devW0bhx43Treby9vfHWLwWXsSP8ApHRcZm2S1mHJ7RqiZvaVsIC+Hq6M/2JhpyLiaN0ER8io64x+Itf7b7H2JWH+HFE67RXVI65YtbtTJsGyckQEGBOQ+/TR4XKIiJZ5NSk58qVK/zxx38zZMLDw9m7dy8BAQFUrFiRUaNGcfr0aebPnw/AgAEDmDZtGkOGDKFfv35s27aN2bNnsyhliX1xeVlZl2frH+dueluJlIUM3dws1tlV246dz9I9rk/ArCsqA6xYAU8/DX/9ZR736AGTJkHp0tmKVUTE1Tk16dm5cyd33XWX9XjIkCEA9O7dm3nz5hEREcHJkyetrwcHB7NmzRoGDx7M9OnTKVu2LFOnTtV0dbHKyro8jpiSnuL6ZCulODkriZRNsnbmDDz3HCxZYh4HB8PMmXDDzEUREckapyY9rVq1shYip2XevHmpzrVs2ZLduzMuUhXX1TQ4gMCi3nYNcTnS9cmWu5uF0V1CMi2mTnV9crKZ3IwaBdHR4O4OQ4fCa6+ZqyuLiMhNyVeFzCKZcXez8No9Ibn2PAvm2js2U8qBjnWCmNG9IfZU3QT5+9D0ymlo3twczoqOhttug927zXV3lPCIiDiEkh4pcIr7Oa5wPbOkxSCdTT+BznWDmN69QYbXeyfEseDPr3Fv3Ai2b4ciReCDD2DrVqhbN/uBi4hIKkp6pMD57lBk5o3sFOjvQ/8Wwdm+vnPdsszs2ZBihVLPLuwQeYDdX75I1Y8/MNfgue8+OHQInnnGHNoSERGHyldT1kUyk5RssGzv6Zu6xwMNyxHk7wsY3BZcgmFfpT/93II55bxdSGCavT1gDnW1Cwlk+7HzbPvzHL6XLvK/xZMpvfwLs0G5cuaU9G7dbipuERHJmJIeyfeSkg3r+jZno+NSbf2QVUt2/5c0Tbtu36y0pExZT5lynh53NwvNq5Wg+U+r4cUX4fx5c52dp5+GceOgaNGbillERDKnpEfyraRkg2kb/mDu1nAuXXPMBqHZlen6QL//DgMGwIYN5nHduuZ+WbfdlvPBiYgIoKRH8il7NhTNTemuDxQfD+++C2+8AXFx4OsLY8bA4MGQziriIiKSM5T0SL5jz4aiuSXNXdBT/PQTPPUUHPx3L7D27SEsDKpUydUYRUTEpNlbkq+k7JOVF6TaBT3FpUswcKC57s7Bg1CqFCxYAGvXKuEREXEi9fRIvrIj/EK298lytEB/H0Z3CTF3QQcwDPjqK3MLich/p80//ji88w6USL/IWUREcoeSHslXsrKhqCOlDGNNfLCedTf1psEB//XwnDxpzsRatco8rlEDZs2CVq2cEq+IiKSmpEfyjOunnqdKKv6VlQ1F7eFmgeT0t38DbIexmlcvaftiUpK5gvIrr0BMjFmcPGqU+ePj2FhFROTmKOkRp7k+yTl+LoaFP5/g78vx1tf9fT14vHkwz7Subk1+mgYHEODnxYWY+PRumy6LBZ68ozKtbwm0JlaNKhVn14mL1uOLMXG8sfqwzRBaqmGsFHv2QL9+sGuXeXzHHWbvTkju7f0lIiL2sxgZbXNeAEVHR+Pv709UVBRFtSCc06w9EMHYlYfsqs/x83KnRY1SVC3lR2iVkqw/FMm8bSey/ezBbavbJFI3yrTHKSYGRo+G9983d0b39zenpT/xBLhpboCISE5wxO9vJT2S69YeiGDggt0484sXWNSHMfem0XuTmTVrYNAgOPFv0vXwwzB5MgQGOjxGERH5jyN+f+uvpZKrUqacOzvTjoyOZeCC3aw9EGHnBZFmgnP33WbCU6mSmQAtXqyER0Qkn1DSI7kqL005B3Oz0KSMKpmTk83tImrVgi++MIevXnzRXH+nU6fcC1RERG6akh7JVc6acp6W6zcLTdPhw9CyJfTvby442KgR/PILTJwIfn65GaqIiDiAkh7JVY6ecu4IqRKx2FizULlePfjxRzPBef992L4dGjZ0TpAiInLTNGVdck1SskGyYVDIy52r8UnODsfKJhHbtMns2fntN/P4nntg+nSoWNEpsYmIiOMo6ZFckZUp6rnFZrPQ8+dh2DCYO9d8MSgIpk6FBx4wF/gREZF8T0mP5Lg1+84waOEeZ4eRptH31MJ90UIYPBj++cc8OXAgjB9vrr8jIiIFhpIecbjrF/cL/yeGqRt+d0ocg9tWZ/Evp9LsXQry9+Ht+n60HNoX1q0zT9aubc7Uuv32XI5URERyg5Iecai8MowV5O/DM63NlZd3hF8gMuoaF2LiCSjsTZCvO02Xz8Ptgdfh2jXw9oZXXzWHt7y8nBq3iIjkHCU94jB5YaXl6zcHTdk6IrRqif8a/Pwz9HkK9u0zj1u3hpkzoXr13A1URERynaasi0PklZWWA/19COvZMPX2EtHR8OyzEBpqJjwlSsAnn8B33ynhERFxEerpEYdw9krLxXw9md6jIc2qlEi9kejy5fDMM3D6tHncqxe89x6ULJnrcYqIiPMo6RGHcNZKyynpzdsP3ErzajckMX/9ZfbuLF9uHletag5ltW2bmyGKiEgeoaRHsixldtb1xcEXrsQ5JZZAfx9Gd7lht/SkJAgLg5degsuXwcMDhg+HV14BX1+nxCkiIs6npEeyJKPZWRbI8ZqeAD9PPnikIedi4ihdxFxY0GY4a98+eOops2AZzBqeWbPg1ltzODIREcnrlPSI3TKbnZUbRcz31S9H8+pp1OJcvQqvv25uBpqUBEWLwttvm1tKuKleX0RElPSInfLK7Ky2IYGpT65bBwMGQHi4efzAA+YWEmXL5m5wIiKSp+mvwJKppGSDeVvDnTo7y4K54GDT4ID/Tp49Cz17QocOZsJTvjx8/TV89ZUSHhERSUU9PZKhvLDCcqoFBw0D5s2DoUPhwgVzQ9DnnoM33oAiRZwWp4iI5G1KeiSVlNlZ3x2KZPbW484Ox3aG1tGj5lDWpk3mi/Xrm/tlNWnizBBFRCQfUNIjNvJCz871Xr27Fn2aB+OeEG8WKo8bB/HxUKgQjB0LL7xgTkkXERHJhH5biFVe2DsrhQWzh6dP82Dcf9pqTkM/fNh8sWNHmDEDgoOdGqOIiOQvKmQWIO/MzoL/anjeaFEW94ED4M47zYSndGlYtAjWrFHCIyIiWaaeHgGcs3fWM3dVxdPdnUU7ThIZ/d+zA4t6E+b1B/UfeAL+/ts8+eSTMGECBASkczcREZGMOb2nZ8aMGQQHB+Pj40OjRo344Ycf0m27adMmLBZLqp8jR47kYsQFS1KywbZj5/nmQESuPjfI34fB7WryfNvqbB3ZmkX9mjHlkfos7VSWn358n/rDBpoJzy23wObN8NFHSnhEROSmOLWn5/PPP+eFF15gxowZNG/enFmzZtGpUycOHTpExYoV073u6NGjFC1a1HpcqlSp3Ai3wFn56xleWrafy7GJuf5s6/RzwN3NQmglf5gyD157zVxd2cvL3Dtr5Ejw9s71+EREpOCxGIbhtDKO2267jYYNGxIWFmY9V6tWLbp168b48eNTtd+0aRN33XUXFy9epFixYtl6ZnR0NP7+/kRFRdkkTq6m3/xfWH/obK4/180C0x5tQOe61y0euGsX9OsHe/aYxy1amPtl3XJLrscnIiJ5kyN+fztteCs+Pp5du3bRvn17m/Pt27fnp59+yvDaBg0aEBQURJs2bdi4cWOGbePi4oiOjrb5cXVvrDrglIQHYNqjDf9LeK5cgcGDoWlTM+EpXhw+/hg2blTCIyIiDue0pOfcuXMkJSVRpkwZm/NlypQhMjIyzWuCgoL48MMPWbJkCUuXLqVmzZq0adOGLVu2pPuc8ePH4+/vb/2pUKGCQ99HfrPy1zPM/vFErj83yN+HmT0b0rlukHli1SqoXRsmT4bkZOje3Zyh9cQT2iBURERyhNNnb1ksFptjwzBSnUtRs2ZNatasaT0ODQ3l1KlTTJw4kRYtWqR5zahRoxgyZIj1ODo62mUTn7UHInh20Z5cf+7gttV5pnV1s4YnIsLcMuKrr8wXg4MhLMzcP0tERCQHOe2v1CVLlsTd3T1Vr87Zs2dT9f5kpFmzZvz+++/pvu7t7U3RokVtflxRUrLBiCX7cvWZgUW9mdmzIc+3rYE7BsycaQ5bffUVuLvD8OFw4IASHhERyRVO6+nx8vKiUaNGrF+/nvvuu896fv369XTt2tXu++zZs4egoKCcCDHfS9lD6+zlWBb/fJKoa7k3S2tw2xo807qa2btz8KC5onJKrVaTJuZ+WfXr51o8IiIiTh3eGjJkCI899hiNGzcmNDSUDz/8kJMnTzJgwADAHJo6ffo08+fPB2Dy5MlUrlyZ2rVrEx8fz4IFC1iyZAlLlixx5tvIk9YeiGDMikM2i/7lhmK+nrz9wK3m5qCxsfDmm/DOO5CQAIULm3tnPf202dMjIiKSi5ya9Dz88MOcP3+e119/nYiICOrUqcOaNWuoVKkSABEREZw8edLaPj4+nqFDh3L69Gl8fX2pXbs2q1evpnPnzs56C3nS2gMRDFiw2ynPnt6jIc2rlYQNG6B/f/jjD/OFrl3hgw/AReupRETE+Zy6To8zFPR1euITk2nwxjpi4pJy9bkpG4T++ERd3IcPg08+MV8oWxamTYPrhjBFRESyyhG/v50+e0scZ+2BCIZ++atTEh4Mg1kcwj3kYTh/HiwWGDTIHM7y98/VeERERNKipKeAyK0hLT8vdzw93Lh0NcF6rnHiecJ+/IiSP/9onqhTx9wrq1mzHI9HRETEXkp6CoCkZIPRXx/M8ec827oqL7Q110naEX6Bfy5cpt7ns6k4fSKW2Fjw8YHRo+HFF8HTM8fjERERyQolPflYUrLB9j/PM+W73/j7clyOPuueW4N4sf1/W0OEnv3NnIZ+4IB5om1bcx2eqlVzNA4REZHsUtKTT63Zd4ZhS/blWv1Ou9r/LhgZFWXufh4WBoYBJUvC++9Djx5mHY+IiEgepaQnHxq3+hAf/RCeq88sXdgbliyBZ581t5IA6NMHJk6EEiVyNRYREZHsUNKTzzgj4alnRNNsyBOwcoV5onp1cyirdetcjUNERORmKOnJR9bsO5OrCY9bchK9d6/i5W0LsVyNMYuTR4yAl182i5ZFRETyESU9+URSssHwXNwwNOTvP5n43XRC/jpqnmjeHGbNgtq1cy0GERERR1LSk09M/f53ruRC0XJZzyQmHlxG6IpPsSQlmQsLTpgA/fqBm1uOP19ERCSnKOnJ4+ITkxm1dB9Ldp/O0ef0Cq3Eo+cPccsbI7AcP26efOghmDwZtIu9iIgUAEp68qikZIMXFu9m5b7IHH9WyZiLPPfxbEquWmaeqFgRZsyAu+/O8WeLiIjkFiU9edCafREM+XIvsQnJOfoci5HMw/vW89KmuRSNvWIOXz3/PLz+OhQunKPPFhERyW1KevKY8WsOMWtLzs/Qqnr+FG99O53bTv27onLDhvDhh9CoUY4/W0RExBmU9OQhq/aezvGExysxgUHbv2Dg9i/xTkok0dcXj3HjzEUHPfR1EBGRgku/5fKINfsieHbx3hx9xm0n9/P2+ukEn/sLAKPz3XjMmA6VKuXoc0VERPICJT15wNoDEQxauDvH7u9/7TKjNs3lkX3rzBNlysDUqVj+9z/tlyUiIi5DSY+TJSUbjF15KGdubhjce3gLr37/EaWuXjLP9e8Pb78NxYrlzDNFRETyKCU9Trb9z/NERMU6/L7lL0Uyfn0Yd/65CwAjJATLrFlwxx0Of5aIiEh+oKTHidbsi2DwF3sdek+PpESe2Pk1L/y4EN/EOPD2hldewTJ8OHh5OfRZIiIi+YmSHieIT0ym15yf2f7nBYfet27Eb7y99gNCzv47A6xVK3O/rBo1HPocERGR/EhJTy7LiXV4/OKuMvSHT+mzexUWw8AICMDy3nvQu7cKlUVERP6lpCcX5UTC0/b3n3l9fRhlL58zT/TsiWXSJChVyqHPERERye+U9OSS+MRkhyY8ZS6fY8x3H9Lpt5/ME1WqwMyZ0K6dw54hIiJSkCjpySWdp2xyyH3ckpPosfcbRmz+hMLx1zA8PLAMHQqvvgqFCjnkGSIiIgWRkp5cMHbFAf7459pN36fmP8cZv/YDGp45ap647TYsH34Ideve9L1FREQKOiU9OezxuTvYcPSfm7qHd0Icz/20mKd2LMUzOYlEv8J4THgbBgwAd3cHRSoiIlKwKenJQV2mbmH/mcs3dY/mx/cy7tvpVL4UAYDR7T48pn0A5co5IkQRERGXoaQnhzwxb8dNJTwBV6N4ecPHPHBwIwDXSgfh+2EYlq5dHRWiiIiIS1HSkwNW7T3D90eyOaRlGDx44Hte2jiHgGvRJGPBeOYZfN8aB0WKODZQERERF6Kkx8GSkg2eWbwnW9cGXzjNuG+nc/vJfQAcKh1M1ORphD7a2ZEhioiIuCQlPQ7W9r1NWb7GMymB/j8v4dmfPsc7KYFrHt7MatWTWu+8RocGFR0fpIiIiAtS0uNAY1ceIPz81Sxd0+ivQ4xfO40a508CsKVyA5Y88RKTXnoAdzdtISEiIuIoSnocZM2+M8zdesLu9kVjrzB88yf03PsNAOcK+fN6m35sbtCa3S91VMIjIiLiYEp6HCAp2WDQQjvreAyDzke3Mua7WZSOuQjA4rrtGd+qL1G+RZj5v/pKeERERHKAkh4HuH/6FrvalYs6y+vrw2hz7BcAjgWU56UOT/NzxVspVsiTmfffSsc6QTkZqoiIiMtS0nOTrsUn8evpKxm2cU9Oos+ulQz5YQF+CbHEu3kwI/R/zGj2EPEenjx9VxWGtLtFPTwiIiI5SEnPTar12toMX68d+Qdvr/2AW/8+BsDP5WvzUodnOFayAgDtQkozrEOtHI9TRETE1bk5O4AZM2YQHByMj48PjRo14ocffsiw/ebNm2nUqBE+Pj5UqVKFmTNn5lKkqUVeik33tULx13h5w8esmD+EW/8+RpS3HyM7PMMj3cdbE57Hm1fmo15NcitcERERl+bUpOfzzz/nhRde4OWXX2bPnj3ceeeddOrUiZMnT6bZPjw8nM6dO3PnnXeyZ88eXnrpJZ577jmWLFmSy5Gbmr39fZrn7zr2C+tmD6LfL8txN5JZUasFbZ+cyeL6HTEs5kf+WLOKvNaldm6GKyIi4tIshmEYznr4bbfdRsOGDQkLC7Oeq1WrFt26dWP8+PGp2o8YMYIVK1Zw+PBh67kBAwbw66+/sm3bNrueGR0djb+/P1FRURQtWvSm4q88crXNcakrFxn9/Yfcc8TsrfqraGleaT+ITVUb27QrUciDXa91uKlni4iIuBJH/P52Wk1PfHw8u3btYuTIkTbn27dvz08//ZTmNdu2baN9+/Y25zp06MDs2bNJSEjA09Mz1TVxcXHExcVZj6Ojox0QfWoNTx9m3pdjKBoXQ6LFjdlNujG5eXeuefnYtLOAEh4REREncNrw1rlz50hKSqJMmTI258uUKUNkZGSa10RGRqbZPjExkXPnzqV5zfjx4/H397f+VKhQwTFv4AZHSlUm2rsQvwZWp2vv9xl/1+OpEh6A8LfvzpHni4iISMacPnvLYrGdpm0YRqpzmbVP63yKUaNGMWTIEOtxdHR0jiQ+V718efTR8ZwuWopkN/c02xxXwiMiIuI0TuvpKVmyJO7u7ql6dc6ePZuqNydFYGBgmu09PDwoUaJEmtd4e3tTtGhRmx9H2Tiklc3xqWKBSnhERETyKKclPV5eXjRq1Ij169fbnF+/fj233357mteEhoamar9u3ToaN26cZj1PTgsu7Yc96wkq4REREXE+p05ZHzJkCB9//DFz5szh8OHDDB48mJMnTzJgwADAHJrq1auXtf2AAQM4ceIEQ4YM4fDhw8yZM4fZs2czdOhQZ70F/hx/d4aJjxIeERGRvMGpNT0PP/ww58+f5/XXXyciIoI6deqwZs0aKlWqBEBERITNmj3BwcGsWbOGwYMHM336dMqWLcvUqVN54IEHnPUWADPxCT8bQ8cpm4lLMvB2t7D2+ZYEl/ZzalwiIiLyH6eu0+MMjlynR0RERHKHI35/O30bChEREZHcoKRHREREXIKSHhEREXEJSnpERETEJSjpEREREZegpEdERERcgpIeERERcQlKekRERMQlKOkRERERl+DUbSicIWUB6ujoaCdHIiIiIvZK+b19MxtJuFzSc/nyZQAqVKjg5EhEREQkqy5fvoy/v3+2rnW5vbeSk5M5c+YMRYoUwWLJYHv0bIiOjqZChQqcOnVK+3plgT637NHnlj363LJHn1v26HPLnrQ+N8MwuHz5MmXLlsXNLXvVOS7X0+Pm5kb58uVz9BlFixbVlzsb9Llljz637NHnlj363LJHn1v23Pi5ZbeHJ4UKmUVERMQlKOkRERERl6Ckx4G8vb0ZPXo03t7ezg4lX9Hnlj363LJHn1v26HPLHn1u2ZNTn5vLFTKLiIiIa1JPj4iIiLgEJT0iIiLiEpT0iIiIiEtQ0iMiIiIuQUlPFsyYMYPg4GB8fHxo1KgRP/zwQ4btN2/eTKNGjfDx8aFKlSrMnDkzlyLNe7Ly2W3atAmLxZLq58iRI7kYsXNt2bKFLl26ULZsWSwWC8uXL8/0Gn3fsv656btmGj9+PE2aNKFIkSKULl2abt26cfTo0Uyvc/XvXHY+N33nICwsjLp161oXHgwNDeWbb77J8BpHfdeU9Njp888/54UXXuDll19mz5493HnnnXTq1ImTJ0+m2T48PJzOnTtz5513smfPHl566SWee+45lixZksuRO19WP7sUR48eJSIiwvpTvXr1XIrY+WJiYqhXrx7Tpk2zq72+b6asfm4pXPm7BuYvlKeffprt27ezfv16EhMTad++PTExMeleo+9c9j63FK78nStfvjxvv/02O3fuZOfOnbRu3ZquXbty8ODBNNs79LtmiF2aNm1qDBgwwObcLbfcYowcOTLN9sOHDzduueUWm3P9+/c3mjVrlmMx5lVZ/ew2btxoAMbFixdzIbq8DzCWLVuWYRt931Kz53PTdy1tZ8+eNQBj8+bN6bbRdy41ez43fefSVrx4cePjjz9O8zVHftfU02OH+Ph4du3aRfv27W3Ot2/fnp9++inNa7Zt25aqfYcOHdi5cycJCQk5Fmtek53PLkWDBg0ICgqiTZs2bNy4MSfDzPf0fbs5+q7ZioqKAiAgICDdNvrOpWbP55ZC3zlTUlISixcvJiYmhtDQ0DTbOPK7pqTHDufOnSMpKYkyZcrYnC9TpgyRkZFpXhMZGZlm+8TERM6dO5djseY12fnsgoKC+PDDD1myZAlLly6lZs2atGnThi1btuRGyPmSvm/Zo+9aaoZhMGTIEO644w7q1KmTbjt952zZ+7npO2fav38/hQsXxtvbmwEDBrBs2TJCQkLSbOvI75rL7bJ+MywWi82xYRipzmXWPq3zriArn13NmjWpWbOm9Tg0NJRTp04xceJEWrRokaNx5mf6vmWdvmupPfPMM+zbt48ff/wx07b6zv3H3s9N3zlTzZo12bt3L5cuXWLJkiX07t2bzZs3p5v4OOq7pp4eO5QsWRJ3d/dUPRNnz55NlX2mCAwMTLO9h4cHJUqUyLFY85rsfHZpadasGb///rujwysw9H1zHFf+rj377LOsWLGCjRs3Ur58+Qzb6jv3n6x8bmlxxe+cl5cX1apVo3HjxowfP5569eoxZcqUNNs68rumpMcOXl5eNGrUiPXr19ucX79+Pbfffnua14SGhqZqv27dOho3boynp2eOxZrXZOezS8uePXsICgpydHgFhr5vjuOK3zXDMHjmmWdYunQpGzZsIDg4ONNr9J3L3ueWFlf8zt3IMAzi4uLSfM2h37Uslz67qMWLFxuenp7G7NmzjUOHDhkvvPCC4efnZxw/ftwwDMMYOXKk8dhjj1nb//nnn0ahQoWMwYMHG4cOHTJmz55teHp6Gl999ZWz3oLTZPWze//9941ly5YZv/32m3HgwAFj5MiRBmAsWbLEWW8h112+fNnYs2ePsWfPHgMwJk2aZOzZs8c4ceKEYRj6vqUnq5+bvmumgQMHGv7+/samTZuMiIgI68/Vq1etbfSdSy07n5u+c4YxatQoY8uWLUZ4eLixb98+46WXXjLc3NyMdevWGYaRs981JT1ZMH36dKNSpUqGl5eX0bBhQ5tpib179zZatmxp037Tpk1GgwYNDC8vL6Ny5cpGWFhYLkecd2Tls5swYYJRtWpVw8fHxyhevLhxxx13GKtXr3ZC1M6TMq31xp/evXsbhqHvW3qy+rnpu2ZK6zMDjLlz51rb6DuXWnY+N33nDOPxxx+3/j4oVaqU0aZNG2vCYxg5+12zGMa/1UAiIiIiBZhqekRERMQlKOkRERERl6CkR0RERFyCkh4RERFxCUp6RERExCUo6RERERGXoKRHREREXIKSHhFxeRaLheXLlzs7DJF8b8uWLXTp0oWyZctm+8+VYRhMnDiRGjVq4O3tTYUKFXjrrbccEp+SHhHJNT/99BPu7u507Ngxy9dWrlyZyZMnOz4oO/Tp0weLxYLFYsHT05MqVaowdOhQYmJinBKPSF4VExNDvXr1mDZtWrbv8fzzz/Pxxx8zceJEjhw5wsqVK2natKlD4vNwyF1EROwwZ84cnn32WT7++GNOnjxJxYoVnR2S3Tp27MjcuXNJSEjghx9+4MknnyQmJoawsDBnhyaSZ3Tq1IlOnTql+3p8fDyvvPIKn332GZcuXaJOnTpMmDCBVq1aAXD48GHCwsI4cOAANWvWdHh86ukRkVwRExPDF198wcCBA7nnnnuYN29eqjYrVqygcePG+Pj4ULJkSe6//34AWrVqxYkTJxg8eLC1xwVgzJgx1K9f3+YekydPpnLlytbjX375hXbt2lGyZEn8/f1p2bIlu3fvznL83t7eBAYGUqFCBbp3706PHj00JCaSRX379mXr1q0sXryYffv28b///Y+OHTvy+++/A7By5UqqVKnCqlWrCA4OpnLlyjz55JNcuHDBIc9X0iMiueLzzz+nZs2a1KxZk549ezJ37lyu3/pv9erV3H///dx9993s2bOH77//nsaNGwOwdOlSypcvz+uvv05ERAQRERF2P/fy5cv07t2bH374ge3bt1O9enU6d+7M5cuXb+r9+Pr6kpCQcFP3EHElx44dY9GiRXz55ZfceeedVK1alaFDh3LHHXcwd+5cAP78809OnDjBl19+yfz585k3bx67du3iwQcfdEgMGt4SkVwxe/ZsevbsCZhDRVeuXOH777+nbdu2AIwbN45HHnmEsWPHWq+pV68eAAEBAbi7u1OkSBECAwOz9NzWrVvbHM+aNYvixYuzefNm7rnnnmy9lx07drBw4ULatGmTretFXNHu3bsxDIMaNWrYnI+Li6NEiRIAJCcnExcXx/z5863tZs+eTaNGjTh69OhND3kp6RGRHHf06FF27NjB0qVLAfDw8ODhhx9mzpw51qRn79699OvXz+HPPnv2LK+99hobNmzg77//JikpiatXr3Ly5Mks3WfVqlUULlyYxMREEhIS6Nq1Kx988IHD4xUpqJKTk3F3d2fXrl24u7vbvFa4cGEAgoKC8PDwsEmMatWqBcDJkyeV9IhI3jd79mwSExMpV66c9ZxhGHh6enLx4kWKFy+Or69vlu/r5uZmM0QGpBpy6tOnD//88w+TJ0+mUqVKeHt7ExoaSnx8fJaedddddxEWFoanpydly5bF09Mzy/GKuLIGDRqQlJTE2bNnufPOO9Ns07x5cxITEzl27BhVq1YF4LfffgOgUqVKNx2DanpEJEclJiYyf/583nvvPfbu3Wv9+fXXX6lUqRKfffYZAHXr1uX7779P9z5eXl4kJSXZnCtVqhSRkZE2ic/evXtt2vzwww8899xzdO7cmdq1a+Pt7c25c+ey/D78/PyoVq0alSpVUsIjko4rV65Y/4wDhIeHs3fvXk6ePEmNGjXo0aMHvXr1YunSpYSHh/PLL78wYcIE1qxZA0Dbtm1p2LAhjz/+OHv27GHXrl3079+fdu3apRoWyw4lPSKSo1atWsXFixd54oknqFOnjs3Pgw8+yOzZswEYPXo0ixYtYvTo0Rw+fJj9+/fzzjvvWO9TuXJltmzZwunTp61JS6tWrfjnn3945513OHbsGNOnT+ebb76xeX61atX49NNPOXz4MD///DM9evTIVq+SiGRu586dNGjQgAYNGgAwZMgQGjRowGuvvQbA3Llz6dWrFy+++CI1a9bk3nvv5eeff6ZChQqA2Xu7cuVKSpYsSYsWLbj77rupVasWixcvdkyAhohIDrrnnnuMzp07p/narl27DMDYtWuXYRiGsWTJEqN+/fqGl5eXUbJkSeP++++3tt22bZtRt25dw9vb27j+f11hYWFGhQoVDD8/P6NXr17GuHHjjEqVKllf3717t9G4cWPD29vbqF69uvHll18alSpVMt5//31rG8BYtmxZuu+hd+/eRteuXbP1/kUk77AYxg0D4iIiIiIFkIa3RERExCUo6RERERGXoKRHREREXIKSHhEREXEJSnpERETEJSjpEREREZegpEdERERcgpIeERERcQlKekRERMQlKOkRERERl6CkR0RERFyCkh4RERFxCf8HdaBV53HJBOEAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制真实值和预测值的对比\n",
    "plt.scatter(P_test, P_pred, label='Predicted vs Actual')\n",
    "plt.plot([min(P_test), max(P_test)], [min(P_test), max(P_test)], color='red', label='Ideal Fit')\n",
    "plt.xlabel('Actual P')\n",
    "plt.ylabel('Predicted P')\n",
    "plt.title('Predicted vs Actual')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6370a09d-8156-4fba-bd4d-fff0087a25aa",
   "metadata": {},
   "source": [
    "误差随着实际的值开始越来越大.这不是一个很好的拟合状态."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d30fbe3d-00d7-49a3-a07d-fcff12dffc3d",
   "metadata": {},
   "source": [
    "# Question 2 可行性分析 参数重要性考察\n",
    "随机森林回归,非线性特征拟合数据,不直接输出 k1、α1、β1,但是这里的目的是讨论特征之间的重要性程度,我们由此可以判断哪一个特征是尤为需要重视的.\n",
    "注意:非参数方法,不确定性能如何,这类方法适用于大规模和不确定模型的问题"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "6dd725f3-20e3-4aec-b321-3c83701c0602",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 我们考虑使用 f B_m 作特征\n",
    "X = np.column_stack((f_data, B_m_data))  \n",
    "# P 作为目标\n",
    "y = P_data  \n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "0be435d7-e6b0-4dbe-8ffb-f12d8ee57065",
   "metadata": {},
   "outputs": [],
   "source": [
    "rf = RandomForestRegressor(n_estimators=100, random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "00947957-4227-4594-be9b-6fd348d6ac88",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestRegressor(random_state=42)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;RandomForestRegressor<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.ensemble.RandomForestRegressor.html\">?<span>Documentation for RandomForestRegressor</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>RandomForestRegressor(random_state=42)</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "RandomForestRegressor(random_state=42)"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 训练\n",
    "rf.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "a290fe78-879a-4421-aef7-bbae0745254b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 评估模型\n",
    "y_pred = rf.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "05d6f472-6458-4503-b994-23cf195d18b5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mean Absolute Error: 40051.79011053109\n",
      "Feature importances (f, B_m): [0.44646768 0.55353232]\n"
     ]
    }
   ],
   "source": [
    "# 评估结果\n",
    "print(f\"Mean Absolute Error: {np.mean(np.abs(y_pred - y_test))}\")\n",
    "\n",
    "# 模型重要性解释\n",
    "print(f\"Feature importances (f, B_m): {rf.feature_importances_}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7055922d-2f62-41c3-8c56-28f478627668",
   "metadata": {},
   "source": [
    "# Question 2 可行性分析 参数拓展-线性模型\n",
    "线性修正项模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "3f1bfee3-83c2-44ac-9e46-293885e78a3c",
   "metadata": {},
   "outputs": [],
   "source": [
    "def linear_model(data, k1, alpha1, beta1, k_T):\n",
    "    f, B_m, T = data.T  # 解包 f, B_m, T\n",
    "    return k1 * f**alpha1 * B_m**beta1 * (1 + k_T * T)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "39ec0f39-db3c-4252-b1d9-e14dba03a40a",
   "metadata": {},
   "source": [
    "# Question 2 可行性分析 参数拓展-非线性模型\n",
    "指数修正项模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "10329dcd-bdb8-4212-a431-1bdfd036c00c",
   "metadata": {},
   "outputs": [],
   "source": [
    "def exponential_model(data, k1, alpha1, beta1, gamma):\n",
    "    f, B_m, T = data.T  # 解包 f, B_m, T\n",
    "    return k1 * f**alpha1 * B_m**beta1 * T**gamma"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "842a8ac2-d481-4561-9683-09b487e66cc6",
   "metadata": {},
   "source": [
    "# Question 2 可行性分析 参数拓展-温度函数模型\n",
    "将参数看作温度的函数的模型\n",
    "在这里我们将三个参数看作温度(T)的函数\n",
    "\n",
    "$k_1(T) = k_1' + k_T T$\n",
    "\n",
    "同理我们观察后面的几个变量的表现形式,这种表现是一种保守假设,随着温度的逐渐升高,我们假设对于各个特性的影响是局部线性的,这样我们就可以通过线性模型进行模拟,而我们的数据有限,假设该问题的温度变化下磁性元器件的特性不会发生突变.\n",
    "\n",
    "这里的温度每升高一个单位,损耗因子 $k_T$ 增加 $T$ 单位的大小.$k_1'$ 表示当温度 $T = 0$ 时的初始值,也理解为在基准温度下(比如室温下)的损耗因子.它反映了材料在标准条件下的基本特性.\n",
    "\n",
    "$alpha_1(T) = alpha_1' + alpha1_T T$\n",
    "\n",
    "$beta_1(T) = beta_1' + beta1_T T$\n",
    "\n",
    "$P_{\\text{core}} = k_1(T) f^{\\alpha_1(T)} B_m^{\\beta_1(T)}$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "id": "75864519-bc60-49b3-a6cc-3354945ea15b",
   "metadata": {},
   "outputs": [],
   "source": [
    "def temperature_dependent_model(data, k1_prime, k_T, alpha1_prime, alpha_T, beta1_prime, beta_T):\n",
    "    f, B_m, T = data.T  # 解包 f, B_m, T\n",
    "    k1 = k1_prime + k_T * T\n",
    "    alpha1 = alpha1_prime + alpha_T * T\n",
    "    beta1 = beta1_prime + beta_T * T\n",
    "    return k1 * f**alpha1 * B_m**beta1"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "20144edd-01c9-414f-b836-6dd2c40e85ca",
   "metadata": {},
   "source": [
    "# 最优模型选择\n",
    "这里决定采取也对训练集进行误差采集,这是为了确认我们充分的利用了训练集,并且可以直观的表现出是否存在过拟合问题.而测试集的误差检查是为了观察准确率和泛化能力如何."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "581d008c-ee7a-419c-8c0e-460885a015db",
   "metadata": {},
   "source": [
    "关于返回值的解释 \n",
    "\n",
    "`popt`: 这个变量是最优拟合结果的所得到的参数,也就是对目标函数定义中出现的参数\n",
    "\n",
    "`pcov`: 参数协方差矩阵,用于评估拟合的置信区间.(API返回了这个结果,为了后续的方便取用这里也一并返回出来)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "ea2e9641-ff86-4d34-9ba0-4bf0f58b6f98",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 训练和评估函数\n",
    "def train_and_evaluate_model(model, data_train, P_train, data_test, P_test, initial_guess, bounds):\n",
    "    popt, pcov = curve_fit(model, data_train, P_train, bounds=bounds, p0=initial_guess)\n",
    "\n",
    "    # 训练集预测\n",
    "    P_train_pred = model(data_train, *popt)\n",
    "    # 测试集预测\n",
    "    P_test_pred = model(data_test, *popt)\n",
    "\n",
    "    # 评估训练集误差\n",
    "    mse_train = mean_squared_error(P_train, P_train_pred)\n",
    "    mae_train = mean_absolute_error(P_train, P_train_pred)\n",
    "    # 评估测试集误差\n",
    "    mse_test = mean_squared_error(P_test, P_test_pred)\n",
    "    mae_test = mean_absolute_error(P_test, P_test_pred)\n",
    "\n",
    "    return mse_train, mae_train, mse_test, mae_test, popt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "id": "f01f0d2a-f714-482d-aa4a-e4ed1826e1c5",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Ready the data\n",
    "data = np.column_stack((f_data, B_m_data, T_data))\n",
    "# Data split\n",
    "data_train, data_test, P_train, P_test = train_test_split(data, P_data, test_size=0.2, random_state=42)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "096720fb-b52a-41c0-81a4-6964e24df5bb",
   "metadata": {},
   "source": [
    "#### Detail of there variable\n",
    "我们采用诸多初始化变量,以一组变量`initial_guess_X`和`bounds_X`描述不同模型所需要刻画的维度."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "id": "f2709c45-c44a-4e62-92f4-64d1b7249e6a",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Variable Init for 线性修正项模型\n",
    "initial_guess_linear = [1.0, 1.5, 2.5, 0.1]  # 初始化参数 k1, alpha1, beta1, k_T\n",
    "bounds_linear = ([0, 1, 2, -np.inf], [np.inf, 3, 3, np.inf])\n",
    "# Train\n",
    "mse_train_linear, mae_train_linear, mse_test_linear, mae_test_linear, params_linear = train_and_evaluate_model(\n",
    "    linear_model, data_train, P_train, data_test, P_test, initial_guess_linear, bounds_linear)\n",
    "\n",
    "\n",
    "# Variable Init for 指数修正项模型\n",
    "initial_guess_exponential = [1.0, 1.5, 2.5, 0.1]  # 初始化参数 k1, alpha1, beta1, gamma\n",
    "bounds_exponential = ([0, 1, 2, -np.inf], [np.inf, 3, 3, np.inf])\n",
    "# Train\n",
    "mse_train_exp, mae_train_exp, mse_test_exp, mae_test_exp, params_exp = train_and_evaluate_model(\n",
    "    exponential_model, data_train, P_train, data_test, P_test, initial_guess_exponential, bounds_exponential)\n",
    "\n",
    "\n",
    "# Variable Init for 将参数看作温度函数的模型\n",
    "initial_guess_temp = [1.0, 0.1, 1.5, 0.1, 2.5, 0.1]  # 初始猜测的参数 k1', k_T, alpha1', alpha_T, beta1', beta_T\n",
    "bounds_temp = ([0, -np.inf, 1, -np.inf, 2, -np.inf], [np.inf, np.inf, 3, np.inf, 3, np.inf])\n",
    "# Train\n",
    "mse_train_temp, mae_train_temp, mse_test_temp, mae_test_temp, params_temp = train_and_evaluate_model(\n",
    "    temperature_dependent_model, data_train, P_train, data_test, P_test, initial_guess_temp, bounds_temp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "id": "d726adf1-da71-443d-8fc6-6b7f2868f323",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Linear correction model - MSE (train): 289538086.3724639 MSE (test): 212763377.36895487\n",
      "Exponential correction model - MSE (train): 136603695.12251613 MSE (test): 152924821.61306718\n",
      "Temperature-dependent parameters model - MSE (train): 6.512001608919393e+58 MSE (test): 3.299537404525099e+58\n"
     ]
    }
   ],
   "source": [
    "# The result \n",
    "print(\"Linear correction model - MSE (train):\", mse_train_linear, \"MSE (test):\", mse_test_linear)\n",
    "print(\"Exponential correction model - MSE (train):\", mse_train_exp, \"MSE (test):\", mse_test_exp)\n",
    "print(\"Temperature-dependent parameters model - MSE (train):\", mse_train_temp, \"MSE (test):\", mse_test_temp)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d13ca99d-108f-460e-95c6-b8a34a015017",
   "metadata": {},
   "source": [
    "#### 使用百分比方式刻画 \n",
    "我们有两种办法解决这个问题,第一种是均方误差的平方根(RMSE).我们可以知道MSE的计算方法是:$RMSE = \\sqrt{MSE}$\n",
    "\n",
    "通过使用简单的比例换算我们衡量百分比的形式$\\text{RMSE\\_percentage} = \\frac{RMSE}{\\text{真实值的平均值}} \\times 100$\n",
    "\n",
    "另一种方法是平均绝对百分比误差 (MAPE):$MAPE = \\frac{1}{n} \\sum_{i=1}^{n} \\left| \\frac{P_{\\text{pred}, i} - P_{\\text{true}, i}}{P_{\\text{true}, i}} \\right| \\times 100$\n",
    "\n",
    "这里两种计量方法在直觉上只有计算的顺序不同,为了严格性我们将两个误差都予以表达."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "92b5b586-a220-4432-a9f2-9bdfc134bfcd",
   "metadata": {},
   "outputs": [],
   "source": [
    "def calculate_percentage_errors(P_pred, P_true):\n",
    "    # RMSE\n",
    "    mse = mean_squared_error(P_true, P_pred)\n",
    "    rmse = np.sqrt(mse)\n",
    "    \n",
    "    # RMSE\n",
    "    avg_true = np.mean(P_true)\n",
    "    rmse_percentage = (rmse / avg_true) * 100\n",
    "    \n",
    "    # MAPE\n",
    "    mape = np.mean(np.abs((P_true - P_pred) / P_true)) * 100\n",
    "    \n",
    "    return rmse_percentage, mape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "id": "c1d76db4-4496-4a9e-8feb-8bae97cee354",
   "metadata": {},
   "outputs": [],
   "source": [
    "rmse_percentage_linear, mape_linear = calculate_percentage_errors(\n",
    "    linear_model(data_test, *params_linear), P_test)\n",
    "\n",
    "rmse_percentage_exp, mape_exp = calculate_percentage_errors(\n",
    "    exponential_model(data_test, *params_exp), P_test)\n",
    "\n",
    "rmse_percentage_temp, mape_temp = calculate_percentage_errors(\n",
    "    temperature_dependent_model(data_test, *params_temp), P_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "99b12891-b5bf-4c40-b0af-5a95c4d66379",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Linear correction model - RMSE percentage: 14.118957678051943 MAPE: 26.85960482181696\n",
      "Exponential correction model - RMSE percentage: 11.969973526417336 MAPE: 21.219226222350358\n",
      "Temperature-dependent parameters model - RMSE percentage: 1.7582504070099873e+26 MAPE: 5.752284467562853e+24\n"
     ]
    }
   ],
   "source": [
    "print(\"Linear correction model - RMSE percentage:\", rmse_percentage_linear, \"MAPE:\", mape_linear)\n",
    "print(\"Exponential correction model - RMSE percentage:\", rmse_percentage_exp, \"MAPE:\", mape_exp)\n",
    "print(\"Temperature-dependent parameters model - RMSE percentage:\", rmse_percentage_temp, \"MAPE:\", mape_temp)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "146a2c10-eb76-4c66-9ec1-adfd5731db7f",
   "metadata": {},
   "source": [
    "通过结果我们可以观察三种方案的结果\n",
    "注意,Temperature-dependent的拟合失败了.需要解释的是,这里的结果说明了误差的总大小占据了真实数据的总大小比例,因为我们这里的任务是预测任务,所以和分类任务的直接准确率相比这里的误差只能大致的说明我们模型\"正确的\"得到了大约80%的数据.\n",
    "现在我们试着看看三种模型的可视化结果."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "id": "da753a3e-376b-46b7-91b3-ee9fcbb7529d",
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_pred_vs_actual(P_true, P_pred, model_name):\n",
    "    # 真实值与预测值的曲线图\n",
    "    plt.figure(figsize=(8, 6))\n",
    "    plt.scatter(P_true, P_pred, label='Predicted vs Actual', alpha=0.6)\n",
    "    plt.plot([min(P_true), max(P_true)], [min(P_true), max(P_true)], color='red', label='Ideal Fit')\n",
    "    plt.xlabel('Actual P')\n",
    "    plt.ylabel('Predicted P')\n",
    "    plt.title(f'Predicted vs Actual - {model_name}')\n",
    "    plt.legend()\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "id": "fd02d295-fa6f-4237-95fd-791049bfbd65",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 生成每个模型的预测值\n",
    "P_pred_linear = linear_model(data_test, *params_linear)\n",
    "P_pred_exp = exponential_model(data_test, *params_exp)\n",
    "P_pred_temp = temperature_dependent_model(data_test, *params_temp)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "id": "edc702a3-24f8-4086-bfba-ca6209839f04",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAArMAAAIhCAYAAABdSTJTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAACg6UlEQVR4nOzdd3hTZf/H8XeSJt0tFCiUMsoS4WGDIiCiggMUB6ggIENwKyKigoqAoogDBZWhMkQFEcEB8kMRxQnKVBAHe5SWUWg6aJsmOb8/ztM8lBZooSUdn9d19dJzcnLyPZ0f7tzne1sMwzAQERERESmFrP4uQERERETkbCnMioiIiEippTArIiIiIqWWwqyIiIiIlFoKsyIiIiJSainMioiIiEippTArIiIiIqWWwqyIiIiIlFoKsyIiIiJSainMSpk3Z84cLBaL7yMgIIAaNWowaNAg4uPjz0sNcXFxDBw40Le9atUqLBYLq1atKtR5fvnlF8aOHUtycnKR1gcwcOBA4uLiivy8Zys7O5tq1aphsVj45JNPzvo88+bN4/XXXy+6wk7jbL+uZxIXF8f1119/2mNK2tfvbHi9Xt5//326dOlC5cqVsdvtREdHc/3117NkyRK8Xq+/Syy0ZcuWMXbs2HwfO/n3wvmS831qsViYM2dOvsdceeWVWCyWIv+eOpdrtlgsp/xcSvmmMCvlxuzZs1m9ejUrVqzgrrvuYv78+XTs2JH09PTzXkurVq1YvXo1rVq1KtTzfvnlF8aNG1csYbakWbp0KQcPHgRg5syZZ32e8xlm/Wn06NF8+umn/i7jrGVmZtKtWzcGDBhAdHQ006ZN49tvv2X69OlUr16dW2+9lSVLlvi7zEJbtmwZ48aNy/exTz/9lNGjR5/niv4nPDw835+tXbt2sWrVKiIiIvxQlUjhBfi7AJHzpUmTJrRp0waAK664Ao/Hw3PPPcdnn31G3759833O8ePHCQkJKfJaIiIiuOSSS4r8vGXJzJkzcTgcdOrUia+//pr9+/dTo0YNf5dVYtWrV8/fJZyWYRhkZmYSHByc7+PDhw/nq6++4r333qN///65HuvRowePPfYYGRkZ51yHx+PB7XYTGBiY57Hi+nk/lZYtW56318pPr169ePfdd9m2bRsNGjTw7Z81axaxsbE0bdqUrVu3+rFCkYLRyKyUWzlhcs+ePYD5Nm1YWBibN2/m6quvJjw8nM6dOwPgcrkYP348F154IYGBgVSpUoVBgwZx+PDhXOfMzs7m8ccfp1q1aoSEhHDppZfy22+/5XntU70d/euvv9K9e3cqVapEUFAQ9erVY9iwYQCMHTuWxx57DIA6der43iY88RwLFiygXbt2hIaGEhYWxjXXXMPGjRvzvP6cOXNo2LAhgYGBNGrUiLlz5xboc3bTTTdRu3btfN/ubdu2ba6R5oULF9K2bVsiIyMJCQmhbt263HnnnQV6nQMHDrB8+XK6d+/OY489htfrPeXbofPmzaNdu3aEhYURFhZGixYtfKNNl19+OV9++SV79uzJNdUETv012L17d563X9etW0fv3r2Ji4sjODiYuLg4br/9dt/3TkmQ3zQDi8XCgw8+yPvvv0+jRo0ICQmhefPmLF26NM/zt23bRp8+fYiOjvZ9X7z11lu5jsnMzOTRRx+lRYsWREZGEhUVRbt27fj888/znC/ntadPn06jRo0IDAzkvffey7f2xMRE3n33Xa655po8QTZHgwYNaNasmW9779699OvXL1e9r776aq7vzZyv5UsvvcT48eOpU6cOgYGBfPfdd4wdOxaLxcKGDRu45ZZbqFixou8fBIZhMHXqVFq0aEFwcDAVK1bklltuYefOnXnqWr58OZ07d/Z9nzdq1IgJEyb4viY5n8MTv/92794N5P+We2Gu65VXXmHSpEnUqVOHsLAw2rVrx5o1a/L9/OXnqquuombNmsyaNcu3z+v18t577zFgwACs1rwRITMzk1GjRlGnTh0cDgexsbE88MADed4tKujvQjC//vfccw81atTA4XBQp04dxo0bh9vtLvC1SPmmkVkpt7Zv3w5AlSpVfPtcLhc33HAD99xzDyNHjsTtduP1ernxxhv58ccfefzxx2nfvj179uxhzJgxXH755axbt8432nTXXXcxd+5cRowYwVVXXcWWLVvo0aMHqampZ6znq6++onv37jRq1IhJkyZRq1Ytdu/ezddffw3AkCFDOHr0KG+88QaLFy8mJiYGgMaNGwPwwgsv8PTTTzNo0CCefvppXC4XL7/8Mh07duS3337zHTdnzhwGDRrEjTfeyKuvvorT6WTs2LFkZWXl+8frRHfeeSc33ngj3377LV26dPHt//vvv/ntt9+YMmUKAKtXr6ZXr1706tWLsWPHEhQUxJ49e/j2228L9LWZM2cOHo+HO++8ky5dulC7dm1mzZrFU0895QujAM888wzPPfccPXr04NFHHyUyMpItW7b4QubUqVO5++672bFjxzm9Bb97924aNmxI7969iYqKIiEhgWnTpnHRRRexdetWKleufNbnLm5ffvkla9eu5dlnnyUsLIyXXnqJm2++mX/++Ye6desCsHXrVtq3b0+tWrV49dVXqVatGl999RVDhw7lyJEjjBkzBoCsrCyOHj3KiBEjiI2NxeVy8c0339CjRw9mz56dJ4h+9tln/PjjjzzzzDNUq1aN6OjofGv87rvvyM7O5qabbirQNR0+fJj27dvjcrl47rnniIuLY+nSpYwYMYIdO3YwderUXMdPmTKFCy64gFdeeYWIiAgaNGjgC309evSgd+/e3Hvvvb4pR/fccw9z5sxh6NChTJw4kaNHj/Lss8/Svn17fv/9d6pWrQqY7x7cdddddOrUienTpxMdHc2///7Lli1bAHPqR3p6Op988gmrV6/21ZPzs3uu1/XWW29x4YUX+qbRjB49mm7durFr1y4iIyPP+Hm0Wq0MHDiQmTNnMn78eGw2m+9dkEGDBvHwww/nOt4wDG666SZWrlzJqFGj6NixI3/88Qdjxoxh9erVrF692jfiXdDfhYmJiVx88cVYrVaeeeYZ6tWrx+rVqxk/fjy7d+9m9uzZZ7wOEQyRMm727NkGYKxZs8bIzs42UlNTjaVLlxpVqlQxwsPDjcTERMMwDGPAgAEGYMyaNSvX8+fPn28AxqJFi3LtX7t2rQEYU6dONQzDMP766y8DMB555JFcx3344YcGYAwYMMC377vvvjMA47vvvvPtq1evnlGvXj0jIyPjlNfy8ssvG4Cxa9euXPv37t1rBAQEGA899FCu/ampqUa1atWM2267zTAMw/B4PEb16tWNVq1aGV6v13fc7t27DbvdbtSuXfuUr20YhpGdnW1UrVrV6NOnT679jz/+uOFwOIwjR44YhmEYr7zyigEYycnJpz1ffrxer1G/fn0jNjbWcLvdhmEYxpgxYwzAWLlype+4nTt3Gjabzejbt+9pz3fdddfle135fQ0MwzB27dplAMbs2bNPeU63222kpaUZoaGhxuTJk894znNVu3Zt47rrrjvtMQMGDMhznYBRtWpVIyUlxbcvMTHRsFqtxoQJE3z7rrnmGqNGjRqG0+nM9fwHH3zQCAoKMo4ePZrva7rdbiM7O9sYPHiw0bJlyzyvHRkZecrnnujFF180AGP58uVnPNYwDGPkyJEGYPz666+59t93332GxWIx/vnnH8Mw/ve1rFevnuFyuXIdm/M99cwzz+Tav3r1agMwXn311Vz79+3bZwQHBxuPP/64YRjmz1ZERIRx6aWX5vpZOtkDDzxgnOpPbe3atXP9XijsdTVt2tT3M2IYhvHbb78ZgDF//vxT1mMY//s+XbhwobFz507DYrEYS5cuNQzDMG699Vbj8ssvNwwj78/O8uXLDcB46aWXcp1vwYIFBmC8/fbbhmEU7nfhPffcY4SFhRl79uzJdWzO75A///zTtw8wxowZc9prk/KpXE8z+OGHH+jevTvVq1fHYrHw2WefFfochmHwyiuvcMEFFxAYGEjNmjV54YUXir5YOWeXXHIJdrud8PBwrr/+eqpVq8b//d//+UZZcvTs2TPX9tKlS6lQoQLdu3fH7Xb7Plq0aEG1atV8b1N/9913AHnm3952220EBJz+TZB///2XHTt2MHjwYIKCggp9bV999RVut5v+/fvnqjEoKIhOnTr5avznn384cOAAffr0yTXCWbt2bdq3b3/G1wkICKBfv34sXrwYp9MJmHMQ33//fW688UYqVaoEwEUXXeS79o8//rhQXSO+//57tm/fzoABA7DZbAAMGjQIi8WS6+3QFStW4PF4eOCBBwp87rOVlpbGE088Qf369QkICCAgIICwsDDS09P566+/Cn2+E79GbrcbwzCKoWrTFVdcQXh4uG+7atWqREdH+0avMzMzWblyJTfffDMhISG56urWrRuZmZm53rpeuHAhHTp0ICwsjICAAOx2OzNnzsz383DllVdSsWLFIr+mb7/9lsaNG3PxxRfn2j9w4EAMw8jzDsANN9yA3W7P91z5/bxbLBb69euX63NRrVo1mjdv7vtZ+uWXX0hJSeH+++/P9bN0Pq/ruuuu8/2MAL5pGIWZ/lKnTh0uv/xyZs2aRVJSEp9//vkppwPlvP7JUyNuvfVWQkNDWblyJVC434VLly7liiuuoHr16rk+3127dgXM3wciZ1Kuw2x6ejrNmzfnzTffPOtzPPzww7z77ru88sor/P333yxZsiTPLyIpGebOncvatWvZuHEjBw4c4I8//qBDhw65jgkJCclzB+/B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3XcfF1xwwVnX0aFDB+6++24GDRrEunXruOyyywgNDSUhIYGffvqJpk2bct999xEWFsarr77KkCFD6NKlC3fddRdVq1Zl+/bt/P77777pazk/sxMnTqRr167YbDaaNWuGw+HI89rFeV1nMnz4cIYPH37aY6666iquueYannjiCVJSUujQoYOvm0HLli254447AAr1u/DZZ59lxYoVtG/fnqFDh9KwYUMyMzPZvXs3y5YtY/r06eovLWfmrzvPShrA+PTTT33bH3/8sQEYoaGhuT4CAgJ8d4bfddddBuC7w9QwDGP9+vUGYPz999/n+xLkFHK6Gaxdu/a0xw0YMMAIDQ3N97Hs7GzjlVdeMZo3b24EBQUZYWFhxoUXXmjcc889xrZt23zHZWVlGY8++qgRHR1tBAUFGZdccomxevXqPHctn+qu99WrVxtdu3Y1IiMjjcDAQKNevXp57ggeNWqUUb16dcNqteY5x2effWZcccUVRkREhBEYGGjUrl3buOWWW4xvvvkm1zneffddo0GDBobD4TAuuOACY9asWfneDX86ffr0MQCjQ4cOeR5bunSp0bVrVyM2NtZwOBxGdHS00a1bN+PHH3885fl+//13AzCGDRt2ymP+/vtvA8jVtWHu3LnGRRdd5Pu6tGzZMlcngqNHjxq33HKLUaFCBcNiseS6szwhIcG45ZZbjKioKCMyMtLo16+fsW7dujzdDPbv32/07NnTqFixohEeHm5ce+21xpYtWwr8dT1XtWvXNoB8P3Je/1TdDB544IF8z3di3YZh3iF/5513GrGxsYbdbjeqVKlitG/f3hg/fnyu41588UUjLi7OCAwMNBo1amS88847vs4ABXnt03G73cZ7771nXHnllUZUVJQREBBgVKlSxejatasxb948w+Px+I7ds2eP0adPH6NSpUqG3W43GjZsaLz88su5jsm56//ll1/O81o5NR8+fDjfWmbNmmW0bdvWCA0NNYKDg4169eoZ/fv3N9atW5fruGXLlhmdOnUyQkNDjZCQEKNx48bGxIkTfY9nZWUZQ4YMMapUqeL7/svpRpLf1+Fcr4sC3PF/YjeD08mvE0hGRobxxBNPGLVr1zbsdrsRExNj3HfffcaxY8dyHVfQ34WGYRiHDx82hg4datSpU8ew2+1GVFSU0bp1a+Opp54y0tLSCnVtUj5ZDKMYb6MtRSwWC59++qmvz+GCBQvo27cvf/75Z563T8PCwqhWrRpjxozhhRdeIDs72/dYRkYGISEhfP3111x11VXn8xJEREREyh1NMziFli1b4vF4OHToEB07dsz3mA4dOuB2u9mxY4dv5Zh///0X4LQ34YiIiIhI0SjXI7NpaWm+VaBatmzJpEmTuOKKK4iKiqJWrVr069ePn3/+mVdffZWWLVty5MgRvv32W5o2bUq3bt3wer1cdNFFhIWF8frrr+P1ennggQeIiIjwrdokIiIiIsWnXIfZVatW5Xt36IABA5gzZw7Z2dmMHz+euXPnEh8fT6VKlWjXrh3jxo3zTeo/cOAADz30EF9//TWhoaF07dqVV199laioqPN9OSIiIiLlTrkOsyIiIiJSuqnPrIiIiIiUWgqzIiIiIlJqlbtuBl6vlwMHDhAeHl7gpRZFRERE5PwxDIPU1FSqV6+O1Xr6sddyF2YPHDhwVuu4i4iIiMj5tW/fvjOuAlfuwmx4eDhgfnIKssSoiIiIiJxfKSkp1KxZ05fbTqfchdmcqQUREREKsyIiIiIlWEGmhOoGMBEREREptRRmRURERKTUUpgVERERkVKr3M2ZLQjDMHC73Xg8Hn+XIlIkbDYbAQEBakcnIiJljsLsSVwuFwkJCRw/ftzfpYgUqZCQEGJiYnA4HP4uRUREpMgozJ7A6/Wya9cubDYb1atXx+FwaCRLSj3DMHC5XBw+fJhdu3bRoEGDMzagFhERKS0UZk/gcrnwer3UrFmTkJAQf5cjUmSCg4Ox2+3s2bMHl8tFUFCQv0sSEREpEhqeyYdGraQs0ve1iIiURfrrJiIiIiKllsKsiIiIiJRaCrPlyOWXX86wYcNKzDnHjh1LixYtirQeERERKV8UZsuIgQMHctNNN/m7jDzmzJmDxWLJ8/Huu+8yYsQIVq5c6Tu2pF6DiIiIlFzqZiDFLiIign/++SfXvsjISIKDgwkLC/NTVSIiIlIWaGT2TAwD0tP982EYZ112eno6/fv3JywsjJiYGF599dU8x7hcLh5//HFiY2MJDQ2lbdu2rFq1yvd4UlISt99+OzVq1CAkJISmTZsyf/78QtdisVioVq1aro/g4OBc0wzGjh3Le++9x+eff+4bvT2xFhEREfEPr9dg5+E0ft+XzM7DaXi9Z59PioNGZs/k+HHw1+hhWhqEhp7VUx977DG+++47Pv30U6pVq8aTTz7J+vXrc81RHTRoELt37+ajjz6ievXqfPrpp1x77bVs3ryZBg0akJmZSevWrXniiSeIiIjgyy+/5I477qBu3bq0bdu2iC7SNGLECP766y9SUlKYPXs2AFFRUUX6GiIiIlI4W+KdLNqwn+2H0sjK9hJot1I/OoyerWrQJDbS3+UBCrNlUlpaGjNnzmTu3LlcddVVALz33nvUqFHDd8yOHTuYP38++/fvp3r16oAZKJcvX87s2bN54YUXiI2NZcSIEb7nPPTQQyxfvpyFCxcWKsw6nc5c0wnCwsJITEzMdUxYWBjBwcFkZWVRrVq1s7puERERKTpb4p1MWbmNo+kuYiKDCY60keHysHm/k/hjGQzt3KBEBFqF2TMJCTFHSP312mdhx44duFwu2rVr59sXFRVFw4YNfdsbNmzAMAwuuOCCXM/NysqiUqVKAHg8Hl588UUWLFhAfHw8WVlZZGVlEVrI0eLw8HA2bNjg21bzfhERkZLN6zVYtGE/R9Nd1I8Ow2KxABAWFED9wDC2H0pj8YZ4GsdEYLVa/FqrwuyZWCxn/Va/vxgFmGvr9Xqx2WysX78em82W67GcUdRXX32V1157jddff52mTZsSGhrKsGHDcLlcharHarVSv379Qj1HRERE/Gd3UjrbD6URExnsC7I5LBYLMZHBbDuUyu6kdOpW8e/N3BoiK4Pq16+P3W5nzZo1vn3Hjh3j33//9W23bNkSj8fDoUOHqF+/fq6PnLf5f/zxR2688Ub69etH8+bNqVu3Ltu2bSu2uh0OBx6Pp9jOLyIiIgWTmukmK9tLsMMc8HJkHKfRb9/5Hg922MjK9pKa6fZXiT4Ks2VQWFgYgwcP5rHHHmPlypVs2bKFgQMH5np7/4ILLqBv377079+fxYsXs2vXLtauXcvEiRNZtmwZYIbiFStW8Msvv/DXX39xzz335JnrWpTi4uL4448/+Oeffzhy5AjZ2dnF9loiIiJyauFBAQTarWS4PFTb/S8PPN6bfi8/Qp0tawHIcHkItFsJD/L/m/wKs2XUyy+/zGWXXcYNN9xAly5duPTSS2ndunWuY2bPnk3//v159NFHadiwITfccAO//vorNWvWBGD06NG0atWKa665hssvv5xq1aoV66IGd911Fw0bNqRNmzZUqVKFn3/+udheS0RERE4trlIo9auE0nTJPO4f2YfoA7tJrVAZb0AAhmGQ4MygQXQ4cZX8PxXTYhRkgmUZkpKSQmRkJE6nk4iIiFyPZWZmsmvXLurUqUNQUJCfKhQpHvr+FhGRAnM6cfYbSOTSzwDY0uJSPnloPElBESQ4M4gKdRRrN4PT5bWT+X9sWERERERKjrVroXdvInfuxAgIYMUdw/igXQ8yXRBouGhWowI9WsWWiLZcoDArIiIiImCuPPr66/DEE5CdDXFxWD76iC4XXUz9pHRSM92EBwUQVynU7+24TuTXObM//PAD3bt3p3r16lgsFj777LPTHr948WKuuuoqqlSpQkREBO3ateOrr746P8WKiIiIlFVJSXDjjTB8uBlke/aEjRuhbVusVgt1q4TRvGYF6lYJK1FBFvwcZtPT02nevDlvvvlmgY7/4YcfuOqqq1i2bBnr16/niiuuoHv37mzcuLGYKxUREREpo37+GVq0gCVLwOGAt96ChQuhQgV/V1Ygfp1m0LVrV7p27Vrg419//fVc2y+88AKff/45S5YsoWXLlkVcnYiIiEgZ5vXCxIkwejR4PNCgAXz8sRlsS5FSPWfW6/WSmppKVFTUKY/JWYI1R0pKyvkoTURERKTkOngQ7rgDVqwwt/v2hWnTIDzcv3WdhVLdZ/bVV18lPT2d22677ZTHTJgwgcjISN9HTg9VERERkXJp5Upz9HXFCggOhlmz4P33S2WQhVIcZufPn8/YsWNZsGAB0dHRpzxu1KhROJ1O38e+ffvOY5UiIiIiJYTbDc88A1ddBYmJ8J//wLp1MGgQWErWTV2FUSqnGSxYsIDBgwezcOFCunTpctpjAwMDCQwMPE+ViYiIiJRA8fHQpw/88IO5fdddZhuukBC/llUUSt3I7Pz58xk4cCDz5s3juuuu83c55dLYsWNpccLk8IEDBxbrMrensnv3biwWC5s2bTrvr10SzZkzhwql5M5TERE5j5Ytg+bNzSAbFgbz5sHbb5eJIAt+DrNpaWls2rTJF0Z27drFpk2b2Lt3L2BOEejfv7/v+Pnz59O/f39effVVLrnkEhITE0lMTMTpdPqj/BJl4MCBWCwWLBYLdrudunXrMmLECNLT04v9tSdPnsycOXMKdGxZCaB33303NpuNjz76qFDPW7VqFRaLheTk5OIpTEREJIfLBY89BtddZ/aRbdkSNmyA22/3d2VFyq9hdt26dbRs2dLXVmv48OG0bNmSZ555BoCEhARfsAWYMWMGbrebBx54gJiYGN/Hww8/7Jf6T8frNdh5OI3f9yWz83AaXq9R7K957bXXkpCQwM6dOxk/fjxTp05lxIgR+R6bnZ1dZK8bGRlZrkYEjx8/zoIFC3jssceYOXOmv8sRERHJa/duuOwyeOUVc/uhh2D1arP9Vhnj1zB7+eWXYxhGno+cUb45c+awatUq3/GrVq067fElxZZ4J899uZUxX/zJ81/+xZgv/uS5L7eyJb54R5ADAwOpVq0aNWvWpE+fPvTt29e3qlrO1IBZs2ZRt25dAgMDMQwDp9PJ3XffTXR0NBEREVx55ZX8/vvvuc774osvUrVqVcLDwxk8eDCZmZm5Hj95moHX62XixInUr1+fwMBAatWqxfPPPw9AnTp1AGjZsiUWi4XLL7/c97zZs2fTqFEjgoKCuPDCC5k6dWqu1/ntt99o2bIlQUFBtGnT5oyLZYwaNYpLLrkkz/5mzZoxZswYwPyeuvjiiwkNDaVChQp06NCBPXv2nPa8CxcupHHjxowaNYqff/6Z3bt353o8KyuLxx9/nJo1axIYGEiDBg2YOXMmu3fv5oorrgCgYsWKWCwWBg4cCEBcXFyePsotWrRg7Nixvu1JkybRtGlTQkNDqVmzJvfffz9paWmnrVVERMqhxYvNbgW//moufPDppzBlCpTRe4hK3ZzZkm5LvJMpK7exeb+TCsEO4iqHUiHYweb95v7iDrQnCg4OzjUCu337dj7++GMWLVrke5v/uuuuIzEx0beqWqtWrejcuTNHjx4F4OOPP2bMmDE8//zzrFu3jpiYmDwh82SjRo1i4sSJjB49mq1btzJv3jyqVq0KmIEU4JtvviEhIYHFixcD8M477/DUU0/x/PPP89dff/HCCy8wevRo3nvvPcBcLe7666+nYcOGrF+/nrFjx55y1DlH3759+fXXX9mxY4dv359//snmzZvp27cvbrebm266iU6dOvHHH3+wevVq7r77bixnuKNz5syZ9OvXj8jISLp168bs2bNzPd6/f38++ugjpkyZwl9//cX06dMJCwujZs2aLFq0CIB//vmHhIQEJk+efNrXOpHVamXKlCls2bKF9957j2+//ZbHH3+8wM8XEZEyLjMTHnzQXIrW6YRLLoFNm8AP97WcV0Y543Q6DcBwOp15HsvIyDC2bt1qZGRknNW5PR6vMfaLLUbPqT8bT3zyuzFy0R++jyc++d3oOfVnY9wXfxoej/dcLyOPAQMGGDfeeKNv+9dffzUqVapk3HbbbYZhGMaYMWMMu91uHDp0yHfMypUrjYiICCMzMzPXuerVq2fMmDHDMAzDaNeunXHvvffmerxt27ZG8+bN833tlJQUIzAw0HjnnXfyrXPXrl0GYGzcuDHX/po1axrz5s3Lte+5554z2rVrZxiGYcyYMcOIiooy0tPTfY9PmzYt33OdqFmzZsazzz7r2x41apRx0UUXGYZhGElJSQZgrFq16pTPP9m///5r2O124/Dhw4ZhGMann35q1KxZ0/B4PIZhGMY///xjAMaKFSvyff53331nAMaxY8dy7a9du7bx2muv5drXvHlzY8yYMaes5eOPPzYqVark2549e7YRGRl5yuPP9ftbRERKsH/+MYwWLQwDzI/HHzcMl8vfVZ210+W1k2lktgjtTkpn+6E0YiKD84zuWSwWYiKD2XYold1JxXNT1tKlSwkLCyMoKIh27dpx2WWX8cYbb/ger127NlWqVPFtr1+/nrS0NCpVqkRYWJjvY9euXb7RzL/++ot27drlep2Tt0/0119/kZWVRefOnQtc9+HDh9m3bx+DBw/OVcf48eNz1dG8eXNCTrjz8nR15Ojbty8ffvghAIZhMH/+fPr27QtAVFQUAwcO5JprrqF79+5MnjyZhISE055v5syZXHPNNVSuXBmAbt26kZ6ezjfffAPApk2bsNlsdOrUqcDXX1DfffcdV111FbGxsYSHh9O/f3+SkpLOy01+IiJSgs2bB61bm6OwlSvD//2fuUyt3e7vys6LUtlntqRKzXSTle0lONKW7+PBDhsHU7ykZrqL5fWvuOIKpk2bht1up3r16thP+iYODQ3Nte31eomJick1LznH2d7QFRwcXOjneL1ewJxq0LZt21yP2Wzm59Iwzu4Guj59+jBy5Eg2bNhARkYG+/bto3fv3r7HZ8+ezdChQ1m+fDkLFizg6aefZsWKFfnOtfV4PMydO5fExEQCAgJy7Z85cyZXX331WV0/mFMITr7GE6eI7Nmzh27dunHvvffy3HPPERUVxU8//cTgwYOL9GY+EREpRdLTYehQcwUvgE6dzGBbvbp/6zrPFGaLUHhQAIF2KxkuD2FBeT+1GS4PgXYr4fk8VhRCQ0OpX79+gY9v1aqVL5jFxcXle0yjRo1Ys2ZNrhZpa9asOeU5GzRoQHBwMCtXrmTIkCF5Hnc4HIAZAHNUrVqV2NhYdu7c6Rs1PVnjxo15//33ycjI8AXG09WRo0aNGlx22WV8+OGHZGRk0KVLF9/83Rw5HTVGjRpFu3btmDdvXr5hdtmyZaSmprJx40ZfyAb4+++/6du3L0lJSTRt2hSv18v333+f74Ie+V0/QJUqVXKNCqekpLBr1y7f9rp163C73bz66qtYreYbKh9//PEZr19ERMqoP/+E226DrVvN1bueeQZGjwZb/gNqZZmmGRShuEqh1I8OI8GZkWeUzTAMEpwZNIgOJ65S6CnOcH516dKFdu3acdNNN/HVV1+xe/dufvnlF55++mnWrVsHwMMPP8ysWbOYNWsW//77L2PGjOHPP/885TmDgoJ44oknePzxx5k7dy47duxgzZo1vhZW0dHRBAcHs3z5cg4ePOjrETx27FgmTJjA5MmT+ffff9m8eTOzZ89m0qRJgDnCarVaGTx4MFu3bmXZsmW8ktNu5Az69u3LRx99xMKFC+nXr59v/65duxg1ahSrV69mz549fP311/z77780atQo3/PMnDmT6667jubNm9OkSRPfR8+ePalSpQoffPABcXFxDBgwgDvvvJPPPvuMXbt2sWrVKl/wrF27NhaLhaVLl3L48GFfN4Irr7yS999/nx9//JEtW7YwYMCAXIG5Xr16uN1u3njjDXbu3Mn777/P9OnTC3T9IiJShhgGzJwJF11kBtmYGFi5EsaOLZdBFhRmi5TVaqFnqxpEhTrYfiiNtEw3Hq9BWqab7YfSiAp10KNVLFZryVj/2GKxsGzZMi677DLuvPNOLrjgAnr37s3u3bt9o5e9evXimWee4YknnqB169bs2bOH++6777TnHT16NI8++ijPPPMMjRo1olevXhw6dAiAgIAApkyZwowZM6hevTo33ngjAEOGDOHdd99lzpw5NG3alE6dOjFnzhxfK6+wsDCWLFnC1q1badmyJU899RQTJ04s0HXeeuutJCUlcfz48VwtxEJCQvj777/p2bMnF1xwAXfffTcPPvgg99xzT55zHDx4kC+//JKePXvm+3ns0aOHL7BPmzaNW265hfvvv58LL7yQu+66yzevNTY2lnHjxjFy5EiqVq3Kgw8+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Kfh8vpruyjlB9a5+qnn1Ur2rl+pdvVTv6lVb6n3O3QAmIiIiIrWHRmZFREREJGQpzIqIiIhIyFKYFREREZGQpTArIiIiIiFLYfYMmDVrFq1atSIsLIyePXuyevXqU7ZfuXIlPXv2JCwsjNatW/O3v/2tmnpaO1Sk3m+//TZDhgyhYcOGREdH07dvXz788MNq7G3oq+j3+4TPPvsMt9tNt27dqraDtVBFa15YWMgjjzxCixYt8Pl8tGnThjlz5lRTb0NfRes9b948unbtSp06dYiLi+P2228nIyOjmnob2latWsXIkSOJj4/HsizeeeedX9xH18zKq2i9Q/WaqTD7Ky1YsID777+fRx55hKSkJAYMGMCwYcNISUkpt/3u3bsZPnw4AwYMICkpiYcffphx48axaNGiau55aKpovVetWsWQIUNYtmwZGzZs4NJLL2XkyJEkJSVVc89DU0XrfUJmZiajR49m0KBB1dTT2qMyNb/uuutYsWIFiYmJbNu2jTfeeIOOHTtWY69DV0XrvWbNGkaPHs0dd9zB5s2bWbhwIV999RV33nlnNfc8NOXm5tK1a1dmzpx5Wu11zfx1KlrvkL1mGvlVevfubcaMGVNqW8eOHc3kyZPLbT9p0iTTsWPHUtvuuusu06dPnyrrY21S0XqXp3Pnzmbq1Klnumu1UmXrff3115s//elPZsqUKaZr165V2MPap6I1f//9901MTIzJyMioju7VOhWt93PPPWdat25datuMGTNMQkJClfWxtgLMv/71r1O20TXzzDmdepcnFK6ZGpn9FYqKitiwYQNDhw4ttX3o0KGsXbu23H3WrVtXpv3ll1/O+vXr8fv9VdbX2qAy9f45x3HIzs6mfv36VdHFWqWy9Z47dy47d+5kypQpVd3FWqcyNV+8eDG9evXi2WefpWnTprRv356JEyeSn59fHV0OaZWpd79+/di3bx/Lli3DGMOhQ4d46623GDFiRHV0+Zyja2bNCpVrprumOxDK0tPTCQaDNG7cuNT2xo0bc/DgwXL3OXjwYLntA4EA6enpxMXFVVl/Q11l6v1zzz//PLm5uVx33XVV0cVapTL13r59O5MnT2b16tW43frnpaIqU/Ndu3axZs0awsLC+Ne//kV6ejp33303R44c0bzZX1CZevfr14958+Zx/fXXU1BQQCAQ4KqrruLFF1+sji6fc3TNrFmhcs3UyOwZYFlWqZ+NMWW2/VL78rZL+Spa7xPeeOMNHnvsMRYsWECjRo2qqnu1zunWOxgMcuONNzJ16lTat29fXd2rlSryHXccB8uymDdvHr1792b48OG88MILvPrqqxqdPU0VqfeWLVsYN24cjz76KBs2bOCDDz5g9+7djBkzpjq6ek7SNbNmhNI1U0Mnv0JsbCwul6vMb/BpaWllfpM8oUmTJuW2d7vdNGjQoMr6WhtUpt4nLFiwgDvuuIOFCxcyePDgquxmrVHRemdnZ7N+/XqSkpIYO3YsUBy0jDG43W4++ugjLrvssmrpe6iqzHc8Li6Opk2bEhMTU7KtU6dOGGPYt28f7dq1q9I+h7LK1Pvpp5+mf//+PPDAAwB06dKFiIgIBgwYwJNPPqmRwjNM18yaEWrXTI3M/gper5eePXuyfPnyUtuXL19Ov379yt2nb9++Zdp/9NFH9OrVC4/HU2V9rQ0qU28o/u3ytttuY/78+ZrXVgEVrXd0dDTffvstycnJJa8xY8bQoUMHkpOTufDCC6ur6yGrMt/x/v37c+DAAXJyckq2ff/999i2TUJCQpX2N9RVpt55eXnYdulLp8vlAn4cMZQzR9fM6heS18wauvGs1njzzTeNx+MxiYmJZsuWLeb+++83ERERZs+ePcYYYyZPnmxuueWWkva7du0yderUMePHjzdbtmwxiYmJxuPxmLfeequmTiGkVLTe8+fPN26327z00ksmNTW15HXs2LGaOoWQUtF6/5xWM6i4itY8OzvbJCQkmFGjRpnNmzeblStXmnbt2pk777yzpk4hpFS03nPnzjVut9vMmjXL7Ny506xZs8b06tXL9O7du6ZOIaRkZ2ebpKQkk5SUZADzwgsvmKSkJLN3715jjK6ZZ1pF6x2q10yF2TPgpZdeMi1atDBer9f06NHDrFy5suS9W2+91VxyySWl2n/66aeme/fuxuv1mpYtW5rZs2dXc49DW0XqfckllxigzOvWW2+t/o6HqIp+v39KYbZyKlrzrVu3msGDB5vw8HCTkJBgJkyYYPLy8qq516GrovWeMWOG6dy5swkPDzdxcXHmpptuMvv27avmXoemTz755JT/JuuaeWZVtN6hes20jNHfRUREREQkNGnOrIiIiIiELIVZEREREQlZCrMiIiIiErIUZkVEREQkZCnMioiIiEjIUpgVERERkZClMCsiIiIiIUthVkREREQqbNWqVYwcOZL4+Hgsy+Kdd96p8GcYY5g2bRrt27fH5/PRrFkznnrqqQp9hsKsiMg5qrIXHxERgNzcXLp27crMmTMr/Rn33Xcfr7zyCtOmTeO7775jyZIl9O7du0KfoTArIlLF1q5di8vl4oorrqjwvi1btmT69OlnvlOn4bbbbsOyLCzLwuPx0Lp1ayZOnEhubm6N9EdEzi7Dhg3jySef5Jprrin3/aKiIiZNmkTTpk2JiIjgwgsv5NNPPy15f+vWrcyePZt3332Xq666ilatWtGtWzcGDx5coX4ozIqIVLE5c+Zw7733smbNGlJSUmq6OxVyxRVXkJqayq5du3jyySeZNWsWEydOrOluiUgIuP322/nss8948803+eabb/jd737HFVdcwfbt2wFYsmQJrVu3ZunSpbRq1YqWLVty5513cuTIkQodR2FWRKQK5ebm8s9//pM//OEPXHnllbz66qtl2ixevJhevXoRFhZGbGxsySjHwIED2bt3L+PHjy8ZIQV47LHH6NatW6nPmD59Oi1btiz5+auvvmLIkCHExsYSExPDJZdcwsaNGyvcf5/PR5MmTWjWrBk33ngjN910k6YmiMgv2rlzJ2+88QYLFy5kwIABtGnThokTJ3LRRRcxd+5cAHbt2sXevXtZuHAhr732Gq+++iobNmxg1KhRFTqWwqyISBVasGABHTp0oEOHDtx8883MnTsXY0zJ+++99x7XXHMNI0aMICkpiRUrVtCrVy8A3n77bRISEnj88cdJTU0lNTX1tI+bnZ3NrbfeyurVq/n8889p164dw4cPJzs7+1edT3h4OH6//1d9hojUfhs3bsQYQ/v27YmMjCx5rVy5kp07dwLgOA6FhYW89tprDBgwgIEDB5KYmMgnn3zCtm3bTvtY7qo6CRERgcTERG6++Wag+E/2OTk5rFixomRO2F/+8hduuOEGpk6dWrJP165dAahfvz4ul4uoqCiaNGlSoeNedtllpX5++eWXqVevHitXruTKK6+s1Ll8+eWXzJ8/n0GDBlVqfxE5dziOg8vlYsOGDbhcrlLvRUZGAhAXF4fb7aZ9+/Yl73Xq1AmAlJQUOnTocFrH0sisiEgV2bZtG19++SU33HADAG63m+uvv545c+aUtElOTq6ScJiWlsaYMWNo3749MTExxMTEkJOTU+E5u0uXLiUyMpKwsDD69u3LxRdfzIsvvnjG+ysitUv37t0JBoOkpaXRtm3bUq8Tv5z379+fQCBQMlIL8P333wPQokWL0z6WRmZFRKpIYmIigUCApk2blmwzxuDxeDh69Cj16tUjPDy8wp9r23apqQpAmT/933bbbRw+fJjp06fTokULfD4fffv2paioqELHuvTSS5k9ezYej4f4+Hg8Hk+F+ysitVNOTg47duwo+Xn37t0kJydTv3592rdvz0033cTo0aN5/vnn6d69O+np6Xz88cdccMEFDB8+nMGDB9OjRw/+4z/+g+nTp+M4Dvfccw9DhgwpNVr7SzQyKyJSBQKBAK+99hrPP/88ycnJJa+vv/6aFi1aMG/ePAC6dOnCihUrTvo5Xq+XYDBYalvDhg05ePBgqUCbnJxcqs3q1asZN24cw4cP57zzzsPn85Genl7h84iIiKBt27a0aNFCQVZESlm/fj3du3ene/fuAEyYMIHu3bvz6KOPAjB37lxGjx7NH//4Rzp06MBVV13FF198QbNmzYDiX8yXLFlCbGwsF198MSNGjKBTp068+eabFeqHRmZFRKrA0qVLOXr0KHfccQcxMTGl3hs1ahSJiYmMHTuWKVOmMGjQINq0acMNN9xAIBDg/fffZ9KkSUDxOrOrVq3ihhtuwOfzERsby8CBAzl8+DDPPvsso0aN4oMPPuD9998nOjq65Bht27blH//4B7169SIrK4sHHnigUqPAIiInM3DgwDJ/Jfopj8fD1KlTS90T8HPx8fEsWrToV/VDI7MiIlUgMTGRwYMHlwmyANdeey3Jycls3LiRgQMHsnDhQhYvXky3bt247LLL+OKLL0raPv744+zZs4c2bdrQsGFDoPgGiVmzZvHSSy/RtWtXvvzyyzJrv86ZM4ejR4/SvXt3brnlFsaNG0ejRo2q9qRFRGqAZU4VqUVEREREzmIamRURERGRkKUwKyIiIiIhS2FWREREREKWwqyIiIiIhCyFWREREREJWQqzIiIiIhKyFGZFREREJGQpzIqIiIhIyFKYFREREZGQpTArIiIiIiFLYVZEREREQtb/Ayfm842fQskuAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制线性修正项模型的预测与真实值对比\n",
    "plot_pred_vs_actual(P_test, P_pred_linear, \"Linear Correction Model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "2b6b1326-aacb-4573-b152-33c4cf341966",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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T77tI0eONAICAoxjx44ZhmEYr7zyigEYKSkpZzxfYTwej9GwYUMjLi7OcLlchmEYxpgxYwzAWLlypXe/PXv2GH5+fsbtt99+xvNde+21hV5XYT8DwzCMvXv3GoAxe/bs057T5XIZGRkZRmhoqDF58uR/POe/VbduXQMo9GvcuHH59l20aJEBGK+99prx9NNPG1ar1fj666/z7ZP3Wj85dsMwjOeee84AjJ9//tkwDMNYvny5ARgvvfRSoc/x9ttv54sxKCjI2L9/v3dbdna2ERUVZdx9993ebXfffbcRFhaWbz/D+N9r5s8//zQM438/hxYtWnhfB4ZhGL/99psBGAsXLvRuu++++4zT/bmpW7duvt+9U7lcLiM3N9cYPHiw0aZNm2IdaxiGMXToUAMw/vrrrzPul+fWW281AgMDjQMHDuTb3r17dyMkJMT7O5P3WurcuXOBc/zb96p/+7tjGIYBGGPGjDnr6+rRo0e+/T744AMDMNasWXPGmPLez3///XfvubZs2WIYhmF06NDBGDBggGEYhnH++ecbl112mfe46dOnG4DxwQcf5Dvfiy++aADe35Evv/zyjL8bJ1/z1VdfbdSqVctITU3Nt+/9999vBAUFGcePHzcMo2jvKVK2Veoygx9//JGePXtSs2ZNLBYLH3/8cbHPYRgGr7zyCo0bNyYwMJDatWvz/PPPl3ywlcBFF12Ev78/4eHhXHfdddSoUYMvv/yS6tWr59uvd+/e+caff/45kZGR9OzZE5fL5f1q3bo1NWrU8H5M/d133wEUqL+9+eabC61xO9mOHTvYvXs3gwcPJigoqNjX9tVXX+FyuejXr1++GIOCgrjsssu8MW7fvp2///6bPn365JvhrFu3LhdffPE/Po/NZqNv374sXbrU+1G22+3mvffe44YbbiA6OhowP1bNu/YPPvigWF0jfvjhB3bt2kX//v29MzQDBw7EYrHk+8h6xYoVuN1u7rvvviKf+2xlZGTw2GOP0bBhQ2w2GzabjbCwMDIzM9m2bVuxz3fyz8jlcmEYxj8ec8kll/D7778X+Bo8eHC+/W6++WbuueceHn30UcaPH88TTzxBt27dCj3nqa/VPn36AP97LefNpJ96R/9///tfQkNDWblyZb7trVu3zvdxelBQEI0bN85XjvH5559zxRVXULNmzXzfg7yZr1Pv/L/22mvzzdS1bNkS4F+VeCxevJhOnToRFhaGzWbD39+fmTNnntXPsri+/fZbunTpQu3atfNtHzBgAFlZWflml6Hg+9GZHivqe1Vp/O4U97quv/76fOOz+bledtllNGjQgFmzZrF582Z+//3305YYfPvtt4SGhha4kTTvtZ33Wj7d+3je70aenJwcVq5cyX/+8x9CQkLyfb979OhBTk5OvnIYKd8qdTKbmZlJq1ateOONN876HA8++CAzZszglVde4a+//uKzzz7jggsuKMEoK4+5c+fy+++/s2HDBv7++282bdpEp06d8u0TEhJS4M7nI0eOkJKSQkBAAP7+/vm+Dh8+zLFjxwBITk4GoEaNGvmOt9ls3iTvdPLq2c72Bqe8u/47dOhQIMZFixb9Y4yn21aYQYMGkZOTw/vvvw+YiXRiYiIDBw707tO5c2c+/vhjb4Jdq1Ytmjdvnq++7XTyavb+85//kJKSQkpKCna7nUsuuYQlS5Z4azX/7fesOPr06cMbb7zBkCFD+Oqrr/jtt9/4/fffqVatGtnZ2cU+36k/o1PrCgtjt9tp3759ga/CPk4fNGgQubm52Gw2hg0bVuj5Cntd5r0G8l4nycnJ2Gy2fKU4YNZL1qhRw7tfnsJe54GBgfm+R0eOHOGzzz4r8D04//zzAbyv1dOdM6+s4Wy+7wBLly7l5ptvJi4ujnnz5rFmzRpvEpSTk1Ps8+Ul73v37i3S/snJyYX+zGrWrOl9/GSnK5f4N+9VpfG7U9zrKomfq8ViYeDAgcybN4/p06fTuHFjLr300tPGl9fq72QxMTHYbLYCr/nT/W6cfD6Xy8Xrr79e4Hvdo0cPoOBrWcqvSl0z271790LrbPI4nU6efPJJ5s+fT0pKCs2bN+fFF1/0thrZtm0b06ZNY8uWLTRp0uQcRV1xNW3a1NvN4HROfaMDqFq1KtHR0SxfvrzQY/JawOS9+R0+fJi4uDjv4y6Xq8Ab+anykoWEhIQz7nc6eTWbH374IXXr1j3tfifHeKrCthWmWbNmXHDBBcyePZu7776b2bNnU7NmTa666qp8+91www3ccMMNOBwOfvnlFyZMmECfPn2Ij4+nY8eOhZ477wYO+N/s7qkWLFjAvffem+97dupsUFHkzYCfevPHqX+AUlNT+fzzzxkzZgyPP/64d3te7eXZ+P333/ON69Wrd1bnKUxmZiZ33HEHjRs35siRIwwZMqTQm5vyXpcn/9HOew3kbYuOjsblcnH06NF8Ca1hGBw+fPi0P6MzqVq1Ki1btuS5554r9PG85Ke0zJs3j3r16rFo0aJ8v++nvg6K6uqrr+aJJ57g448/5pprrvnH/aOjo0lMTCyw/e+//wYoUH9d2HvS6bYX9b3q3/7uFKa411VSBgwYwNNPP8306dNP+5rKi+/XX3/FMIx837ukpCRcLpc3vrzX/Ol+N/JUqVIFPz8/7rjjjtPOcJfk77X4VqWemf0nAwcOZNWqVbz//vts2rSJ//73v1xzzTXs3LkTgM8++4z69evz+eefU69ePeLj4703Acm5c91115GcnIzb7S50ZizvfzTy/idk/vz5+Y7/4IMPCr1x52SNGzf2flx2pj+qp5u9uPrqq7HZbOzevbvQGPOS+CZNmhAbG8vChQvzfbS9f/9+Vq9eXbRvCOZr99dff+Xnn3/ms88+y1cSUFjMl112GS+++CJAod0V8ixYsIDs7GzGjRvHd999V+CratWq3lKDq666Cj8/P6ZNm3bGWE+dGcyTt0DEpk2b8m3/9NNP840tFguGYeS70QlgxowZ3u4AxXXqz+afZu6LY+jQoRw4cIClS5cyc+ZMPv30U1599dVC9z31tbpgwQLgf6/lvDvk582bl2+/JUuWkJmZ6X28OK677jq2bNlCgwYNCn2dnk0yW5xZPYvFQkBAQL6E5vDhw2fdzaBt27Z0796dmTNnnvYGx7Vr13LgwAHA/J5+++233iQvz9y5cwkJCflXLa+K+l71b393ClOa13UmcXFxPProo/Ts2ZP+/fufMb6MjIwC5X55nVzyXstXXHEFcPrfjTwhISFcccUVbNiwgZYtWxb6/S7J32vxrUo9M3smu3fvZuHChSQkJHjfvB955BGWL1/O7Nmzef7559mzZw/79+9n8eLFzJ07F7fbzUMPPcRNN91U5LvC5d+79dZbmT9/Pj169ODBBx/kggsuwN/fn4SEBL777jtuuOEG/vOf/9C0aVP69u3La6+9hr+/P127dmXLli288sorRWra/uabb9KzZ08uuugiHnroIerUqcOBAwf46quvvG+sLVq0AGDy5Mn0798ff39/mjRpQnx8PM8++yyjR49mz549XHPNNVSpUoUjR47w22+/ERoayjPPPIPVamXcuHEMGTKE//znP9x5552kpKQwduzYIpcZgNkWZ8SIEdx22204HI4CNZVPP/00CQkJdOnShVq1apGSksLkyZPx9/fnsssuO+15Z86cSZUqVXjkkUcKrR3u168fkyZN4o8//qBVq1Y88cQTjBs3juzsbG677Tbsdjtbt27l2LFjPPPMM97v2dKlS5k2bRrt2rXDarXSvn17atSoQdeuXZkwYQJVqlShbt26rFy5kqVLl+Z7zoiICDp37szLL79M1apViY+P54cffmDmzJnndOGKlJSUQmvwAgMDvb1UZ8yYwbx585g9ezbnn38+559/Pvfffz+PPfYYnTp1yleiFBAQwMSJE8nIyKBDhw7ebgbdu3fnkksuAaBbt25cffXVPPbYY6SlpdGpUydvN4M2bdpwxx13FPs6nn32WVasWMHFF1/MsGHDaNKkCTk5Oezbt49ly5Yxffr0Yn/8nfd78eKLL9K9e3f8/Pxo2bIlAQEBBfa97rrrWLp0Kffeey833XQTBw8eZNy4ccTGxnonEopr7ty5XHPNNXTv3p1BgwbRvXt3qlSpQmJiIp999hkLFy5k3bp11KlThzFjxnjrhp9++mmioqKYP38+X3zxBS+99BJ2u/2sYoCiv1fFx8f/q9+dwpTmdf2TF1544R/36devH2+++Sb9+/dn3759tGjRgp9//pnnn3+eHj16eLuzXHXVVXTu3JmRI0eSmZlJ+/btWbVqFe+9916Bc06ePJlLLrmESy+9lHvuuYf4+HjS09PZtWsXn332mf5OVyS+vPusLAGMjz76yDvOu3MzNDQ035fNZvPeeX7nnXcagLF9+3bvcevWrSvWnbOS/+7XM+nfv78RGhpa6GO5ubnGK6+8YrRq1coICgoywsLCjPPOO8+4++67jZ07d3r3czgcxsMPP2zExMQYQUFBxkUXXWSsWbOmwF3Rp7vrfc2aNUb37t0Nu91uBAYGGg0aNCjQHWHUqFFGzZo1DavVWuAcH3/8sXHFFVcYERERRmBgoFG3bl3jpptuMr755pt855gxY4bRqFEjIyAgwGjcuLExa9Yso3///v/YzeBkffr0MQCjU6dOBR77/PPPje7duxtxcXFGQECAERMTY/To0cP46aefTnu+P/74wwCM4cOHn3afv/76ywDydW2YO3eu0aFDB+/PpU2bNvnuGj5+/Lhx0003GZGRkYbFYsl313tiYqJx0003GVFRUYbdbjf69u1rrF27tsCdxwkJCUbv3r2NKlWqGOHh4cY111xjbNmypcg/13/rTN0M4uLiDMMwjE2bNhnBwcEF7r7Pyckx2rVrZ8THxxsnTpwwDON/r/VNmzYZl19+uREcHGxERUUZ99xzj5GRkZHv+OzsbOOxxx4z6tata/j7+xuxsbHGPffc4z3XyTFee+21BWK/7LLL8t1VbhiGcfToUWPYsGFGvXr1DH9/fyMqKspo166dMXr0aO/z590B/vLLLxc4J6fcVe5wOIwhQ4YY1apV8/6M8zp+FNaR4IUXXjDi4+ONwMBAo2nTpsY777zj7Zhx6jX9UzeDk79PU6ZMMTp27GhEREQYNpvNqFmzpnHjjTcaX3zxRb59N2/ebPTs2dOw2+1GQECA0apVqwJ3uue9lhYvXlzguUrivcow/t3vzqk/g397XUW947+o7+endjMwDMNITk42hg4dasTGxho2m82oW7euMWrUKCMnJyfffikpKcagQYOMyMhIIyQkxOjWrZv3vefUa967d68xaNAgIy4uzvD39zeqVatmXHzxxcb48eOLfW1SdlkMowi36VYCFouFjz76yNuLcNGiRdx+++38+eefBT6eDQsLo0aNGowZM4bnn3+e3Nxc72PZ2dmEhITw9ddfn/YOZRGRMxkwYAAffvghGRkZvg5FRKTMU5nBabRp0wa3201SUtJp777s1KkTLpeL3bt306BBAwDvKiRnuslHREREREpGpU5mMzIyvKtMgdm6ZePGjURFRdG4cWNuv/12+vXrx8SJE2nTpg3Hjh3j22+/pUWLFt4anrZt2zJo0CBee+01PB4P9913H926daNx48Y+vDIRERGRyqFSlxl8//333jsjT9a/f3/mzJlDbm4u48ePZ+7cuRw6dIjo6Gg6duzIM888472h4e+//+aBBx7g66+/JjQ0lO7duzNx4kSioqLO9eWIiIiIVDqVOpkVERERkfJNfWZFREREpNxSMisiIiIi5ValuwHM4/Hw999/Ex4eftplCEVERETEdwzDID09nZo1a2K1nnnutdIls3///XeJrXUtIiIiIqXn4MGD/7jqYKVLZsPDwwHzm1OUJUxFRERE5NxKS0ujdu3a3rztTCpdMptXWhAREaFkVkRERKQMK0pJqG4AExEREZFyS8msiIiIiJRbSmZFREREpNyqdDWzRWEY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+eefpz1nUFAQjz32GCNHjmTu3Lns3r2bX375xdvCKiYmhuDgYJYvX86RI0dITTVviBs7diwTJkxg8uTJ7Nixg82bNzN79mwmTZoEmDOsVquVwYMHs3XrVpYtW8Yrr7xSpOu8/fbbef/991m8eDF9+/b1bt+7dy+jRo1izZo17N+/n6+//podO3bQtGnTQs8zc+ZMrr32Wlq1akXz5s29X71796ZatWrMmzeP+Ph4+vfvz6BBg/j444/Zu3cv33//vTfxrFu3LhaLhc8//5yjR496uxFceeWVvPfee/z0009s2bKF/v3750uYGzRogMvl4vXXX2fPnj289957TJ8+vUjXLyIiUpEpmS1BVquF3m1rERUawK6kDDJyXLg9Bhk5LnYlZRAVGsCNbeOwWs98t/y5YrFYWLZsGZ07d2bQoEE0btyYW2+9lX379nlnL2+55RaefvppHnvsMdq1a8f+/fu55557znjep556iocffpinn36apk2bcsstt5CUlASAzWZjypQpvPXWW9SsWZMbbrgBgCFDhjBjxgzmzJlDixYtuOyyy5gzZ463lVdYWBifffYZW7dupU2bNowePZoXX3yxSNf53//+l+TkZLKysvK1EAsJCeGvv/6id+/eNG7cmLvuuov777+fu+++u8A5jhw5whdffEHv3r0L/T7eeOON3oR92rRp3HTTTdx7772cd9553Hnnnd661ri4OJ555hkef/xxqlevzv333w+YHSA6d+7MddddR48ePejVqxcNGjTwPkfr1q2ZNGkSL774Is2bN2f+/PlMmDChSNcvIiJSkVmMsy1GLKfS0tKw2+2kpqYSERGR77GcnBz27t1LvXr1CAoKOuvn2HIolSXrE9iVlIEj10Ogv5VGMeHc2DaO5nH2f3sJImelpF7fIiIipe1M+dqpVDNbCprH2WkWG8G+5EzSc1yEB9mIjw4tMzOyIiIiIhWFktlSYrVaqF8tzNdhiIiIiPx7TiesXg0nrdxZVqhmVkREREROb+tWuOgi6NYN/v8G8bJEyayIiIiIFOTxwJQp0K4dbNgAERFw7JivoypAZQaFqGT3xEklode1iIgUWUICDBgAK1ea4+7dYeZMiI31aViF0czsSfJWzMrKyvJxJCIlL+91ferKcCIiIvksXAgtWpiJbHAwTJ0KX3xRJhNZ0MxsPn5+fkRGRnp7ooaE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2dnZ1UZfT4qNja2xvc1mIzo6usZznE4nTufpg2RdWDq+Pz2f+rTy6zMF2YeGJHPvle0DUJWIiIhIw1Nv0wwcDgepqamsXLmyyvGVK1fSu3fvGs/p1atXtfYrVqygR48e2O32OqvVX80ahxId+sv1vHtvbwVZERERkXNQr+vMTpw4kVdffZW5c+eydetWJkyYwL59+xg3bhxQMUVg7Nixle3HjRvH3r17mThxIlu3bmXu3LmkpaUxadKk+rqF00p/ZPBpA22YA3Y9MYxuSVEBrkpERESkYanXObOjR4/m2LFjPP7442RlZdGlSxeWLVtGy5YtAcjKymLfvp/WbG3dujXLli1jwoQJzJo1i/j4eF544YULao3ZU6U/MpjsE0X89n++JKeojJhQJwt/15NmjUPruzQRERGRBqFe15mtD4FYZ1ZEREREai8o1pkVERERETlXCrMiIiIiErQUZkVEREQkaCnMioiIiEjQUpgVERERkaClMCsiIiIiQUthVkRERESClsKsiIiIiAQthVkRERERCVoKsyIiIiIStBRmRURERCRoKcyKiIiISNBSmBURERGRoGWr7wICzTRNAPLz8+u5EhERERGpycmcdjK3nclFF2YLCgoASEpKqudKRERERORMCgoKiIyMPGMbwzybyNuA+Hw+Dh06RHh4OIZh1Pn18vPzSUpKYv/+/URERNT59S526u/AU58Hlvo7sNTfgaX+DqwLub9N06SgoID4+HgsljPPir3oRmYtFguJiYkBv25ERMQF94PSkKm/A099Hljq78BSfweW+juwLtT+/qUR2ZP0ATARERERCVoKsyIiIiIStBRm65jT6WTq1Kk4nc76LuWioP4OPPV5YKm/A0v9HVjq78BqKP190X0ATEREREQaDo3MioiIiEjQUpgVERERkaClMCsiIiIiQUthVkRERESClsLseTB79mxat26Ny+UiNTWVtWvXnrH96tWrSU1NxeVy0aZNG15++eUAVdow+NPfb7/9NoMGDaJp06ZERETQq1cvPvroowBWG/z8/fk+af369dhsNrp161a3BTZA/vZ5WVkZDz/8MC1btsTpdNK2bVvmzp0boGqDn7/9vWDBArp27UqjRo2Ii4vjjjvu4NixYwGqNritWbOGkSNHEh8fj2EYvPvuu794jp6ZtedvfwfrM1Nh9hwtWrSIBx54gIcffpiMjAz69u3L0KFD2bdvX43td+/ezbBhw+jbty8ZGRn89a9/Zfz48bz11lsBrjw4+dvfa9asYdCgQSxbtoz09HSuvPJKRo4cSUZGRoArD07+9vdJeXl5jB07lgEDBgSo0oajNn1+4403smrVKtLS0ti2bRsLFy6kY8eOAaw6ePnb3+vWrWPs2LHcddddbN68mcWLF/PVV19x9913B7jy4FRUVETXrl156aWXzqq9npnnxt/+DtpnpinnpGfPnua4ceOqHOvYsaM5ZcqUGttPnjzZ7NixY5Vjf/jDH8zf/OY3dVZjQ+Jvf9ekc+fO5rRp0853aQ1Sbft79OjR5t/+9jdz6tSpZteuXeuwwobH3z5fvny5GRkZaR47diwQ5TU4/vb3M888Y7Zp06bKsRdeeMFMTEyssxobKsB85513zthGz8zz52z6uybB8MzUyOw5cLvdpKenM3jw4CrHBw8ezGeffVbjORs2bKjWfsiQIXz99deUl5fXWa0NQW36++d8Ph8FBQU0adKkLkpsUGrb3/PmzWPnzp1MnTq1rktscGrT50uWLKFHjx48/fTTJCQkkJyczKRJkygpKQlEyUGtNv3du3dvDhw4wLJlyzBNkyNHjvDmm28yfPjwQJR80dEzs34FyzPTVt8FBLOcnBy8Xi/Nmzevcrx58+YcPny4xnMOHz5cY3uPx0NOTg5xcXF1Vm+wq01//9yMGTMoKirixhtvrIsSG5Ta9Pf27duZMmUKa9euxWbTfy/+qk2f79q1i3Xr1uFyuXjnnXfIycnhnnvu4fjx45o3+wtq09+9e/dmwYIFjB49mtLSUjweD9dccw0vvvhiIEq+6OiZWb+C5ZmpkdnzwDCMKl+bplnt2C+1r+m41Mzf/j5p4cKFPPbYYyxatIhmzZrVVXkNztn2t9fr5aabbmLatGkkJycHqrwGyZ+fcZ/Ph2EYLFiwgJ49ezJs2DCee+45XnvtNY3OniV/+nvLli2MHz+eRx99lPT0dD788EN2797NuHHjAlHqRUnPzPoRTM9MDZ2cg5iYGKxWa7Xf4LOzs6v9JnlSbGxsje1tNhvR0dF1VmtDUJv+PmnRokXcddddLF68mIEDB9ZlmQ2Gv/1dUFDA119/TUZGBvfddx9QEbRM08Rms7FixQquuuqqgNQerGrzMx4XF0dCQgKRkZGVxzp16oRpmhw4cID27dvXac3BrDb9/eSTT9KnTx8eeughAC699FJCQ0Pp27cv06dP10jheaZnZv0ItmemRmbPgcPhIDU1lZUrV1Y5vnLlSnr37l3jOb169arWfsWKFfTo0QO73V5ntTYEtelvqPjt8vbbb+f111/XvDY/+NvfERERfPvtt2RmZla+xo0bR4cOHcjMzOSyyy4LVOlBqzY/43369OHQoUMUFhZWHvvhhx+wWCwkJibWab3Brjb9XVxcjMVS9dFptVqBn0YM5fzRMzPwgvKZWU8fPGsw3njjDdNut5tpaWnmli1bzAceeMAMDQ019+zZY5qmaU6ZMsW89dZbK9vv2rXLbNSokTlhwgRzy5YtZlpammm3280333yzvm4hqPjb36+//rpps9nMWbNmmVlZWZWvEydO1NctBBV/+/vntJqB//zt84KCAjMxMdEcNWqUuXnzZnP16tVm+/btzbvvvru+biGo+Nvf8+bNM202mzl79mxz586d5rp168wePXqYPXv2rK9bCCoFBQVmRkaGmZGRYQLmc889Z2ZkZJh79+41TVPPzPPN3/4O1memwux5MGvWLLNly5amw+Ewu3fvbq5evbrye7fddpvZr1+/Ku0//fRTMyUlxXQ4HGarVq3MOXPmBLji4OZPf/fr188Eqr1uu+22wBcepPz9+T6Vwmzt+NvnW7duNQcOHGiGhISYiYmJ5sSJE83i4uIAVx28/O3vF154wezcubMZEhJixsXFmTfffLN54MCBAFcdnD755JMz/p+sZ+b55W9/B+sz0zBN/V1ERERERIKT5syKiIiISNBSmBURERGRoKUwKyIiIiJBS2FWRERERIKWwqyIiIiIBC2FWREREREJWgqzIiIiIhK0FGZFRERExG9r1qxh5MiRxMfHYxgG7777rt/vYZomzz77LMnJyTidTpKSknjiiSf8eg+FWRGRi1RtHz4iIgBFRUV07dqVl156qdbvcf/99/Pqq6/y7LPP8v333/P+++/Ts2dPv95DYVZEpI599tlnWK1Wrr76ar/PbdWqFTNnzjz/RZ2F22+/HcMwMAwDu91OmzZtmDRpEkVFRfVSj4hcWIYOHcr06dO57rrravy+2+1m8uTJJCQkEBoaymWXXcann35a+f2tW7cyZ84c3nvvPa655hpat25Nt27dGDhwoF91KMyKiNSxuXPn8qc//Yl169axb9+++i7HL1dffTVZWVns2rWL6dOnM3v2bCZNmlTfZYlIELjjjjtYv349b7zxBt988w033HADV199Ndu3bwfg/fffp02bNixdupTWrVvTqlUr7r77bo4fP+7XdRRmRUTqUFFREf/5z3/44x//yIgRI3jttdeqtVmyZAk9evTA5XIRExNTOcrRv39/9u7dy4QJEypHSAEee+wxunXrVuU9Zs6cSatWrSq//uqrrxg0aBAxMTFERkbSr18/Nm7c6Hf9TqeT2NhYkpKSuOmmm7j55ps1NUFEftHOnTtZuHAhixcvpm/fvrRt25ZJkyZx+eWXM2/ePAB27drF3r17Wbx4MfPnz+e1114jPT2dUaNG+XUthVkRkTq0aNEiOnToQIcOHbjllluYN28epmlWfv+DDz7guuuuY/jw4WRkZLBq1Sp69OgBwNtvv01iYiKPP/44WVlZZGVlnfV1CwoKuO2221i7di2ff/457du3Z9iwYRQUFJzT/YSEhFBeXn5O7yEiDd/GjRsxTZPk5GTCwsIqX6tXr2bnzp0A+Hw+ysrKmD9/Pn379qV///6kpaXxySefsG3btrO+lq2ubkJERCAtLY1bbrkFqPiTfWFhIatWraqcE/b3v/+dMWPGMG3atMpzunbtCkCTJk2wWq2Eh4cTGxvr13WvuuqqKl+/8sorREVFsXr1akaMGFGre/nyyy95/fXXGTBgQK3OF5GLh8/nw2q1kp6ejtVqrfK9sLAwAOLi4rDZbCQnJ1d+r1OnTgDs27ePDh06nNW1NDIrIlJHtm3bxpdffsmYMWMAsNlsjB49mrlz51a2yczMrJNwmJ2dzbhx40hOTiYyMpLIyEgKCwv9nrO7dOlSwsLCcLlc9OrViyuuuIIXX3zxvNcrIg1LSkoKXq+X7Oxs2rVrV+V18pfzPn364PF4KkdqAX744QcAWrZsedbX0sisiEgdSUtLw+PxkJCQUHnMNE3sdju5ublERUUREhLi9/taLJYqUxWAan/6v/322zl69CgzZ86kZcuWOJ1OevXqhdvt9utaV155JXPmzMFutxMfH4/dbve7XhFpmAoLC9mxY0fl17t37yYzM5MmTZqQnJzMzTffzNixY5kxYwYpKSnk5OTw8ccf86tf/Yphw4YxcOBAunfvzp133snMmTPx+Xzce++9DBo0qMpo7S/RyKyISB3weDzMnz+fGTNmkJmZWfnatGkTLVu2ZMGCBQBceumlrFq16rTv43A48Hq9VY41bdqUw4cPVwm0mZmZVdqsXbuW8ePHM2zYMC655BKcTic5OTl+30doaCjt2rWjZcuWCrIiUsXXX39NSkoKKSkpAEycOJGUlBQeffRRAObNm8fYsWN58MEH6dChA9dccw1ffPEFSUlJQMUv5u+//z4xMTFcccUVDB8+nE6dOvHGG2/4VYdGZkVE6sDSpUvJzc3lrrvuIjIyssr3Ro0aRVpaGvfddx9Tp05lwIABtG3bljFjxuDxeFi+fDmTJ08GKtaZXbNmDWPGjMHpdBITE0P//v05evQoTz/9NKNGjeLDDz9k+fLlREREVF6jXbt2/Otf/6JHjx7k5+fz0EMP1WoUWETkdPr371/tr0SnstvtTJs2rcpnAn4uPj6et95665zq0MisiEgdSEtLY+DAgdWCLMD1119PZmYmGzdupH///ixevJglS5bQrVs3rrrqKr744ovKto8//jh79uyhbdu2NG3aFKj4gMTs2bOZNWsWXbt25csvv6y29uvcuXPJzc0lJSWFW2+9lfHjx9OsWbO6vWkRkXpgmGeK1CIiIiIiFzCNzIqIiIhI0FKYFREREZGgpTArIiIiIkFLYVZEREREgpbCrIiIiIgELYVZEREREQlaCrMiIiIiErQUZkVEREQkaCnMioiIiEjQUpgVERERkaClMCsiIiIiQet/ASK6yxUwdl/2AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制指数修正项模型的预测与真实值对比\n",
    "plot_pred_vs_actual(P_test, P_pred_exp, \"Exponential Correction Model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "id": "2076b3eb-6e9e-4111-8ba9-5396f259ed11",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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XBpmd+zYgddffx179+7F5s2bYTab0alTJ2RkZBS5TExMDLp164ZWrVohOjoa7733HkaMGIEVK1aUY+VEREREVBFIQgjh6iLyXb9+Hb6+vtixYwdat25d6DzvvPMO1qxZg5MnT9qmDRs2DH///Tf27Nlz122kpqbCaDQiJSUFnp6epVY7EREREZUOZ/Jaheozm5KSAgDw8vIqcp49e/agU6dOdtM6d+6MAwcOIDc3t8D8OTk5SE1NtbsRERERUeVQYcKsEAKjR4/GY489hoYNGxY5X0JCAqpXr243rXr16jCbzbhx40aB+adMmQKj0Wi7BQcHl3rtREREROQaFSbMvvHGGzhy5AiWLFly13klSbK7n99T4s7pADBu3DikpKTYbpcvXy6dgomIiIjI5VSuLgAA3nzzTaxZswY7d+5EUFBQsfP6+fkhISHBblpiYiJUKhW8vb0LzK/VaqHVaku1XiIiIiKqGFx6ZFYIgTfeeAMrV67E1q1bERYWdtdlIiMjsXnzZrtpmzZtQosWLaBWq8uqVCIiIiKqgFwaZl9//XX8+OOPWLx4MTw8PJCQkICEhARkZWXZ5hk3bhz69etnuz9s2DBcvHgRo0ePxsmTJzFv3jxERUVhzJgxrtgFIiIiInIhl4bZOXPmICUlBW3btoW/v7/ttmzZMts88fHxuHTpku1+WFgY1q9fj+3bt6Np06b45JNPMGvWLPTq1csVu0BERERELlShxpktDxxnloiIiKhik+04s0REREREzmCYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlimCUiIiIi2WKYJSIiIiLZYpglIiIiItlyaZjduXMnevTogYCAAEiShNWrVxc7//bt2yFJUoHbqVOnyqdgIiIiIqpQVK7ceEZGBpo0aYKBAweiV69eDi93+vRpeHp62u77+PiURXlEREREVMG5NMx27doVXbt2dXo5X19fVKlSpfQLIiIiIiJZkWWf2YiICPj7+6NDhw7Ytm1bsfPm5OQgNTXV7kZERERElYOswqy/vz++/fZbrFixAitXrkTdunXRoUMH7Ny5s8hlpkyZAqPRaLsFBweXY8VEREREVJYkIYRwdREAIEkSVq1ahaefftqp5Xr06AFJkrBmzZpCH8/JyUFOTo7tfmpqKoKDg5GSkmLX75aIiIiIKobU1FQYjUaH8pqsjswW5uGHH8bZs2eLfFyr1cLT09PuRkRERESVg+zDbHR0NPz9/V1dBhERERG5gEtHM0hPT8e5c+ds92NiYnD48GF4eXmhRo0aGDduHOLi4rBw4UIAwIwZMxAaGooHHngAJpMJP/74I1asWIEVK1a4aheIiIiIyIVcGmYPHDiAdu3a2e6PHj0aANC/f38sWLAA8fHxuHTpku1xk8mEMWPGIC4uDnq9Hg888AB+/fVXdOvWrdxrJyIiIiLXqzAXgJUXZzoUExEREVH5u68uACMiIiKi+xfDLBERERHJFsMsEREREckWwywRERERyRbDLBERERHJFsMsEREREckWwywRERERyRbDLBERERHJFsMsEREREckWwywRERERyRbDLBERERHJFsMsEREREcmWw2HWarXi888/x6OPPoqHHnoI7733HrKzs8uyNiIiIiKiYjkcZqdOnYp3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p4JWrUCWyVLo41kmC7RqBTx07DZPRETyxjBLVAmFerujlq8B8SlZEMK+X6wQAvEpWajt64FQb3cXVUhERFQ6GGaJKiGFQkKvZkHwctfgXGI60rPNsFgF0rPNOJeYDi93DXo2C+R4s0REJHsMs0SVVMNAI0Z0qI1GQUYkZ5kQeyMDyVkmNA6qwmG5iIio0mCHOaJKrGGgEQ38PfkLYEREVGkxzBJVcgqFhHAfg6vLICIiKhPsZkBEREREssUwS0RERESyxTBLRERERLLFMEtEREREssUwS0RERESyxTBLRERERLLFMEtEREREssUwS0RERESyxTBLRERERLLFMEtEREREssUwS0RERESyxTBLRERERLLFMEtEREREssUwS0RERESyxTBLRERERLLFMEtEREREssUwS0RERESyxTBLRERERLLFMEtEREREssUwS0RERESyxTBLRERERLLl8jA7e/ZshIWFQafToXnz5vjjjz+KnHf79u2QJKnA7dSpU+VYMRERERFVFC4Ns8uWLcPIkSPx/vvvIzo6Gq1atULXrl1x6dKlYpc7ffo04uPjbbfatWuXU8VEREREVJG4NMxOnz4dgwYNwuDBg1G/fn3MmDEDwcHBmDNnTrHL+fr6ws/Pz3ZTKpXlVDERERERVSQuC7MmkwkHDx5Ep06d7KZ36tQJf/75Z7HLRkREwN/fHx06dMC2bduKnTcnJwepqal2NyIiIiKqHFwWZm/cuAGLxYLq1avbTa9evToSEhIKXcbf3x/ffvstVqxYgZUrV6Ju3bro0KEDdu7cWeR2pkyZAqPRaLsFBweX6n4QERERkeuoXF2AJEl294UQBablq1u3LurWrWu7HxkZicuXL2PatGlo3bp1ocuMGzcOo0ePtt1PTU1loCUiIiKqJFx2ZLZatWpQKpUFjsImJiYWOFpbnIcffhhnz54t8nGtVgtPT0+7GxERERFVDi4LsxqNBs2bN8fmzZvtpm/evBmPPPKIw+uJjo6Gv79/aZdHRERERDLg0m4Go0ePxssvv4wWLVogMjIS3377LS5duoRhw4YByOsiEBcXh4ULFwIAZsyYgdDQUDzwwAMwmUz48ccfsWLFCqxYscKVu0FERERELuLSMPvCCy8gKSkJH3/8MeLj49GwYUOsX78eISEhAID4+Hi7MWdNJhPGjBmDuLg46PV6PPDAA/j1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4AAiIiIQEREBABg9ejQiIiLw0UcfAQDmz5+Pfv364a233kLdunXx5JNP4q+//kJwcDCAvH/M165di2rVqqF169Z44oknUL9+fSxdutSpOnhkloioDKxbtw63bt3CoEGDYDQa7R579tlnERUVhTfeeAPjx49Hhw4dULNmTfTu3Rtmsxm//fYbxo4dCyBvnNmdO3eid+/e0Gq1qFatGtq2bYvr16/js88+w7PPPosNGzbgt99+g6enp20btWrVwg8//IAWLVogNTUVb7/9domOAhMRFaVt27YFzhLdTq1WY+LEiXbXBNwpICAAK1asuKc6eGSWiKgMREVFoWPHjgWCLAD06tULhw8fxqFDh9C2bVssX74ca9asQdOmTdG+fXv89ddftnk//vhjxMbGombNmvDx8QGQd4HE7Nmz8fXXX6NJkybYt29fgbFf582bh1u3biEiIgIvv/wyRowYAV9f37LdaSIiF5BEcZGaiIiIiKgC45FZIiIiIpIthlkiIiIiki2GWSIiIiKSLYZZIiIiIpIthlkiIiIiki2GWSIiIiKSLYZZIiIiIpIthlkiIiIiki2GWSIiIiKSLYZZIiIiIpIthlkiIiIikq3/B2CpIJ7+2XZOAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘制温度依赖参数模型的预测与真实值对比\n",
    "plot_pred_vs_actual(P_test, P_pred_temp, \"Temperature-Dependent Parameters Model\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0712141c-47dc-4465-a688-614bc748422c",
   "metadata": {},
   "source": [
    "对温度函数模型的修正"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4d320faa-8b95-40cb-b28e-52681c7bdde8",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "# 尝试数据标准化\n",
    "scaler = StandardScaler()\n",
    "data_scaled = scaler.fit_transform(data)\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "20244test",
   "language": "python",
   "name": "20244test"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.19"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
